Учебники

Ruby on Rails 2.1 — Руководство по RMagick

Rails предоставляет привязки к ImageMagick и GraphicsMagick , которые являются популярными и стабильными библиотеками Си. Библиотека RMagick предоставляет один и тот же интерфейс для ImageMagick и GraphicsMagick, поэтому не имеет значения, какой из них вы используете.

Вы можете получить RMagick , установив rmagick gen в Unix или rmagick-win32 gem в Windows. Давайте установим его на Unix-машину следующим образом:

$ gem install rmagick

Модуль RMagick поставляется вместе с классом Magick :: Image , который позволяет изменять размеры изображений четырьмя различными методами —

  • изменить размер (ширина, высота)
  • масштаб (ширина, высота)
  • образец (ширина, высота)
  • миниатюра (ширина, высота)

Все эти методы принимают пару целочисленных значений, соответствующих ширине и высоте в пикселях нужного вам эскиза.

пример

Вот пример, который использует метод resize () для изменения размера изображения. Он берет файл tmp.jpg и делает его миниатюру шириной 100 пикселей и высотой 100 пикселей —

require 'rubygems'
require 'RMagick'

class ImageController < ApplicationController

   def createThubnail
      width, height = 100, 100

      img =  Magick::Image.read('tmp.jpg').first
      thumb = img.resize(width, height)
	   
      # If you want to save this image use following
      # thumb.write("mythumbnail.jpg")

      # otherwise send it to the browser as follows
      send_data(thumb.to_blob, :disposition => 'inline', :type => 'image/jpg')
   end
end

Вот шаги для создания эскиза —

  • Здесь метод класса Image.read получает имя файла изображения в качестве аргумента и возвращает массив объектов Image. Вы получаете первый элемент этого массива, который, очевидно, является нашим изображением tmp.jpg .

  • Далее мы вызываем метод resize с нужными аргументами, который создает миниатюру.

  • Наконец, мы направляем это изображение в браузер. Вы также можете использовать метод thumb.write («mythumbnail.jpg») для локального сохранения этого изображения на вашем компьютере.

Здесь метод класса Image.read получает имя файла изображения в качестве аргумента и возвращает массив объектов Image. Вы получаете первый элемент этого массива, который, очевидно, является нашим изображением tmp.jpg .

Далее мы вызываем метод resize с нужными аргументами, который создает миниатюру.

Наконец, мы направляем это изображение в браузер. Вы также можете использовать метод thumb.write («mythumbnail.jpg») для локального сохранения этого изображения на вашем компьютере.

Преобразование форматов изображения

Это очень легко конвертировать файл изображения из одного формата в другой формат. RMagick справляется с этим очень умно . Вы можете просто прочитать файл и записать его с другим расширением.

пример

В следующем примере файл JPEG преобразуется в файл GIF.

require 'rubygems'
require 'RMagick'

class ImageController < ApplicationController

   def changeFormat

      img =  Magick::Image.read('tmp.jpg').first
    
      # If you want to save this image use following
      # img.write("mythumbnail.gif")

      # otherwise send it to the browser as follows
      send_data(img.to_blob, :disposition => 'inline', :type => 'image/gif')
   end
end

Вы можете изменить изображение в соответствии с вашими требованиями следующим образом: