Ruby on Rails 2.1 - Guida RMagick
Rails fornisce collegamenti a ImageMagick e GraphicsMagick , che sono librerie C popolari e stabili. La libreria RMagick fornisce la stessa interfaccia con ImageMagick e GraphicsMagick, quindi non importa quale utilizzi.
Puoi prendere RMagickinstallando rmagick gen su Unix o rmagick-win32 gem su Windows. Installiamolo su una macchina Unix come segue:
$ gem install rmagick
Il RMagickviene fornito con la classe Magick :: Image , che ti consente di ridimensionare le immagini in quattro metodi diversi:
- ridimensiona (larghezza, altezza)
- scala (larghezza, altezza)
- campione (larghezza, altezza)
- miniatura (larghezza, altezza)
Tutti questi metodi accettano una coppia di valori interi, corrispondenti alla larghezza e all'altezza in pixel della miniatura desiderata.
Esempio
Ecco un esempio che utilizza il metodo resize () per ridimensionare l'immagine. Prende il filetmp.jpg e ne fa una miniatura di 100 pixel di larghezza per 100 pixel di altezza -
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
Ecco i passaggi per creare una miniatura:
Qui il metodo di classe Image.read riceve un nome di file immagine come argomento e restituisce un array di oggetti Image. Ottieni il primo elemento di quell'array, che è ovviamente la nostra immagine tmp.jpg .
Successivamente, chiamiamo metodo resize con gli argomenti desiderati, che sta creando una miniatura.
Infine, stiamo indirizzando questa immagine al browser. Puoi anche usare il metodo thumb.write ("mythumbnail.jpg") per memorizzare questa immagine localmente sulla tua macchina.
Conversione di formati immagine
È molto facile convertire un file immagine da un formato a un altro formato. RMagicklo gestisce in modo molto intelligente. Puoi semplicemente leggere il file e scriverlo con un'estensione diversa.
Esempio
L'esempio seguente converte un file JPEG in un file 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
È possibile modificare un'immagine in un formato in base alle proprie esigenze come segue:
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