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