Ruby on Rails 2.1 - Guia RMagick
Rails fornece ligações para ImageMagick e GraphicsMagick , que são bibliotecas C populares e estáveis. A biblioteca RMagick fornece a mesma interface com ImageMagick e GraphicsMagick, portanto, não importa qual você usar.
Você pode ter RMagickinstalando o rmagick gen no Unix ou rmagick-win32 gem no Windows. Vamos instalá-lo em uma máquina Unix da seguinte maneira -
$ gem install rmagick
o RMagickmódulo vem junto com a classe Magick :: Image , que permite redimensionar imagens em quatro métodos diferentes -
- redimensionar (largura, altura)
- escala (largura, altura)
- amostra (largura, altura)
- miniatura (largura, altura)
Todos esses métodos aceitam um par de valores inteiros, correspondendo à largura e altura em pixels da miniatura desejada.
Exemplo
Aqui está um exemplo que usa o método resize () para redimensionar a imagem. Leva o arquivotmp.jpg e cria uma miniatura com 100 pixels de largura por 100 pixels de altura -
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
Aqui estão as etapas para criar uma miniatura -
Aqui, o método de classe Image.read recebe um nome de arquivo de imagem como um argumento e retorna um array de objetos Image. Você obtém o primeiro elemento desse array, que obviamente é nossa imagem tmp.jpg .
Em seguida, estamos chamando o método resize com os argumentos desejados, que é a criação de uma miniatura.
Por fim, estamos direcionando essa imagem para o navegador. Você também pode usar o método thumb.write ("mythumbnail.jpg") para armazenar esta imagem localmente em sua máquina.
Converter formatos de imagem
É muito fácil converter um arquivo de imagem de um formato para outro formato. RMagicklida com isso com muita inteligência. Você pode simplesmente ler o arquivo e escrevê-lo com uma extensão diferente.
Exemplo
O exemplo a seguir converte um arquivo JPEG em um arquivo 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
Você pode alterar uma imagem para um formato com base em seus requisitos da seguinte forma -
img = Magick::Image.read("tmp.png").first
img.write("tmp.jpg") # Converts into JPEG
img.write("tmp.gif") # Converts into GIF
img.write("JPG:tmp") # Converts into JPEG
img.write("GIF:tmp") # Converts into GIF