Redimensionando imagens com Ruby e Image Science no Mac OS X
Leia em 1 minuto
Se você precisa criar miniaturas de imagens com Ruby, esqueça o RMagick. Embora ele tenha muito mais funcionalidades que, convenhamos, quase ninguém usa, chegou a hora de conhecer o Image Science que, segundo seus autores, não sofre dos mesmos problemas de memory leak que o RMagick.
O Image Science possui algumas funções específicas para a geração de miniaturas, como redimensionamento e crop, utilizando o Free Image. Segundo os criadores do projeto, ele não sofre dos mesmos problemas de memory leak que RMagick.
Como instalar
Para instalar o Free Image, você precisará do XCode. Não se esqueça de adicionar o SDK para o Mac OS X 10.3.9, que não vem selecionado por padrão.
Instalando o Free Image
Baixe o código-fonte do Free Image na página do projeto SourceForge. A versão que instalei foi a 3.10.0.
Após extrair os arquivos, abra o arquivo "MakeFile.osx" e altere as linhas abaixo de
LIBRARIES_PPC = -Wl,-syslibroot /Developer/SDKs/MacOSX10.3.9.sdk
LIBRARIES_I386 = -Wl,-syslibroot /Developer/SDKs/MacOSX10.4u.sdk
para
LIBRARIES_PPC = -Wl,-syslibroot /Developer/SDKs/MacOSX10.3.9.sdk/usr/lib
LIBRARIES_I386 = -Wl,-syslibroot /Developer/SDKs/MacOSX10.4u.sdk/usr/lib
Agora, basta compilar!
make
sudo make install
Instalando o Image Science
Para finalizar, basta instalar o Image Science.
sudo gem install RubyInline
sudo gem install image_science
O Image Science é muito simples. Para redimensionar imagens proporcionalmente, limitando o maior tamanho, faça algo como o exemplo abaixo.
ImageScience.with_image(file) do |img|
img.thumbnail(100) do |thumb|
thumb.save "picture-thumb.jpg"
end
end
Se você quiser redimensionar a imagem sem se preocupar com a proporção, você pode usar o método resize
.
ImageScience.with_image(file) do |img|
img.resize(100, 150) do |thumb|
thumb.save "picture-thumb.jpg"
end
end
E, por último, existe o método cropped_thumbnail
, que recorta a imagem no tamanho especificado.
ImageScience.with_image(file) do |img|
img.cropped_thumbnail(100) do |thumb|
thumb.save "picture-thumb.jpg"
end
end