RMagickでcomposite するときにハマった。
Rubyで画像を取り扱うときに gem RMagick
はよく使うと思います。
RMagickを使って画像を合成しようとした時に嵌ったのでメモがてらの記事です。
嵌ったコード
image = Magick::ImageList.new(‘image/image1.jpg’) composite_image = Magick::ImageList.new('./image/composite.jpg') image.composite(composite_image, 10, 10, Magick::OverCompositeOp); image.write(‘image/generate.jpg')
なんかいやっても image/generate.jpg
が生成されなくて嵌った。
ドキュメントみたら ..orz ってなったし 冷静になったらそうだよねってなった。
解決方法
方法1
image = Magick::ImageList.new(‘image/image1.jpg’) composite_image = Magick::ImageList.new('./image/composite.jpg') image.composite!(composite_image, 10, 10, Magick::OverCompositeOp); image.write(‘image/generate.jpg')
方法2
image = Magick::ImageList.new(‘image/image1.jpg’) composite_image = Magick::ImageList.new('./image/composite.jpg') save_image = image.composite(composite_image, 10, 10, Magick::OverCompositeOp); save_image.write(‘image/generate.jpg')
簡単に言うと
compositeの時は 返り値にオブジェクトを返すけど、 composite!の時は 返り値がなく実行したオブジェクトの画像が上書きされる
ってとこでハマってた。
まとめ
ちゃんとドキュメント読みましょう。
ちなみにRMagickのメソッドはこちら
- 作者: クーガー株式会社,石井敦
- 出版社/メーカー: インプレスジャパン
- 発売日: 2008/11/28
- メディア: 大型本
- 購入: 4人 クリック: 89回
- この商品を含むブログ (7件) を見る