スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:スポンサー広告 

【Ruby】RMagickでアフィン変換などいろんな処理をやってみた

最近RMagickを使う機会が増えて来たので少しまとめます

画像処理をするのが初めてだったので結構いろいろ経験できて楽しいです

画像の読み込み


img = Magick::Image.read('/path/to/image').first


アニメーションgifやPhotoshopのPSDファイルなんかのマルチ画像ファイルを想定して、readメソッドで読み込むと配列が返ってくるのでちょっと注意が必要です。
僕はjpgとpngをよく扱うのでうっかり画像のオブジェクトが返ってくると思ってひっかかりました。

新しい画像の作成


new_img = Magick::Image.new(480, 480) {
self.background_color = "white"
self.format = "png"
}


ここでは480×480の背景白のpng画像のオブジェクトを生成しています
他にも指定できるattributeはいっぱいありますが、ここを参考にしてみてください。

RMagick 1.15.0: class Image (attribute methods)

画像の出力

ファイルとして出力

img.write('/path/to/new_img_file')


バイナリデータとして出力

binary_img_data = img.to_blob


リサイズ


img.resize!(100, 100)

引数は横、縦の順番で指定ですね。

縦横比を保ちつつリサイズ


img.resize_to_fit!(150, 100)

こちらは引数の値が小さい方に合わせてくれるみたいです。

フリップ、フロップ


img.flip!
img.flop!


そのままフリップして、フロップしてという感じです。

アフィン変換


matrix_src = [0.720526, 0.693428, -0.693428, 0.720526, 0, 0]
matrix = Magick::AffineMatrix.new(matrix_src[0], matrix_src[1], matrix_src[2], matrix_src[3], matrix_src[4], matrix_src[5])
trasformed_img = img.affine_transform(matrix)


回転とかやってくれる変換ですね。便利です。ちなみに例では右に45度ほど回転するmatrixです。

以上ここ2,3日でいろいろいじってみた処理になります。
アフィン変換と縦横比を維持しつつリサイズというのは結構ぐっときました。

他にもたくさんいろんなことが出来そうなので
RMagick 1.15.0 User's Guide and Reference
を参考にしたいところですねー
相当助けられました!感謝!
スポンサーサイト
テーマ : プログラミング
ジャンル : コンピュータ

Tag:Ruby  Trackback:0 comment:0 

Comment

comment form
(編集・削除用):
管理者にだけ表示を許可
プロフィール

6rats

Author:6rats
こんにちは、ITベンチャーで働くエンジニアです
主に自分の周りで起きた技術的なことをメモとして書き残して行きます。
Android以外にもRuby/Ruby on RailsやFuelPHPなどなどたまにやります。基本的なスタンスとしては興味があるもしくは必要になったらいろんなことにチャレンジします。
最近はiOSアプリ開発を始めています。

購読
follow us in feedly
個人プロダクト

Androidアプリ

Twitterクライアント

Webアプリケーション

EcPriceWatch(Amazon価格の推移を計測、最安値を知らせるサービス)
Google AdSense
ブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。