RMagick2
今作ってるシステムが画像をデータベースに保存しようとしてるので,その辺のデータをRMagickで使えるようにしたい.
っつーことで,まずはデータベースからその画像が保存されているレコードを引っ張ってみる.モデルは"Image".だけどRMagickの"Image"とかぶるのでなんとかした方がいいんだろうか…includeしなきゃ平気なのかしら.
def img_data image = Image.find(params[:id]) # RMagickに取り込む magick_img = Magick::Image.from_blob(image.data).first # 小さくしてみる thumb = magick_img.resize_to_fit(120,120) # 再びバイナリデータに img_data = thumb.to_blob{ self.format = 'jpeg' } # 表示用にデータを送る send_data(image_data, { :filename => 'test.jpg', :type => image.content_type, :disposition => 'inline' }) end
from_blobの返り値がよく分からないけど,これで取れてるところを見ると,一番最初が画像データなのかな…
[ JPEG 640x480 640x480+0+0 DirectClass 8-bit 43kb]
こんな感じで帰ってきてるみたいだから二つ目の項目がサイズとかどの辺りなのか.
とりあえずこれで大きな画像が縮小されて表示された模様.
今後はアップロードしたときにこの辺の処理を入れて表示のときはもっとシンプルにしないと.
ちなみに画像の取り扱いはファイルとして扱った方がいいのか,はたまたデータベース上で保持しちゃった方がいいのか,一長一短な気もするけどどっちがいいんだろう.教えてエロい人.