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
Вы можете изменить изображение в соответствии с вашими требованиями следующим образом: