terça-feira, 6 de setembro de 2011

RMagick merge images

Alguns projetos antigos eu precisei fazer o merge de duas imagens usando o RMagick.

Por exemplo:

img1 = Magick::Image::read(file1).first
img2 = Magick::Image::read(file2).first
imgList = Magick::ImageList.new()
imgList.push(img1)
imgList.push(img2)
imgList.append(true).write('novaImagem.jpg')


Só que o push, faz uma imagem ficar embaixo da outra, não consigo setar uma posição correta.

Para fazer uma imagem de background e outra sobreposta por cima, tem um segredo que é usando o Gravity
Exemplo:

foo = Magick::Image::read('foo.jpg').first
bar = Magick::Image::read('bar.jpg').first

novaImagem = foo.composite(bar, Magick::EastGravity, 0, 0, Magick::OverCompositeOp) #the 0,0 is the x,y
novaImagem.format = 'jpeg'



Agora somente preciso acertar o posicionamento, tem outros metodos no lugar de EastGravity, pois eu quero que a imagem comece no 0,0.

terça-feira, 31 de maio de 2011

Rake 0.9.0 undefined method task

Ao executar rake db:migrate com o rails 3, ruby 1.8.7 e gem 1.3.7

Acontece esse erro:

Rake 0.9.0 undefined method task

Pesquisando achei que é uma incompatibilidade entre a versao do rake.

Remova a versao com problemas
sudo gem uninstall rake -v 0.9


E adicione no gem file uma versão que funcione:
gem 'rake', '0.8.7


Atualize seu bundle
bundle update


Se voce nao remover (que é o meu caso, nao quero mexer em outros projetos)
bundle exec rake db:migrate


Para ele reconhecer a versao do gem e nao a mais recente instalada.
Github sobre o erro https://github.com/jimweirich/rake/issues/33

Outros links sobre:
http://stackoverflow.com/questions/6075997/rake-0-9-0-undefined-method-task
http://stackoverflow.com/questions/5287121/undefined-method-task-using-rake-0-9-0