2016-12-31 5 views
0

だから、私はそうRubyのRMagickリサイズ画像がデータベースにバイナリデータとして保存され

require 'RMagick' 
image = Magick::Image.read(filename).first 
image.change_geometry!("640x480") { |cols, rows, img| 
    newimg = img.resize(cols, rows) 
    newimg.write("newfilename.jpg") 
} 

のようなルビー色で画像をリサイズするためにRmagickライブラリを使用している、これはファイルに保存された画像のためにうまく動作しますが、どのように私はバイナリデータのようにデータベースに格納された画像についても同じことをします。つまり、基本的に変数のバイナリデータです。

答えて

2

Magick::Image.readは、ファイルを開いてデータを読み取り、そのデータを画像の配列に変換するための短いカットです。データがデータベース内にある場合(おそらく何らかの種類のBLOB列)、使用しているデータベースインターフェイスを使用してデータベースからデータを読み取ってから、from_blobを使用してデータを解析してMagick::Imageにサイズ変更してくださいいつものように、バック生データを取得し、いつものようにデータベースにそのブロブを書くためにto_blobを使用します。

image = Magick::Image.from_blob(raw_binary_data_from_your_database).first 
image.change_geometry!('640x480') do |cols, rows, img| 
    newimg = img.resize(cols, rows) 
    write_bytes_to_database(newimg.to_blob) 
end 

raw_binary_from_your_database変数とwrite_bytes_to_database方法はプレースホルダですので、私はあなたがデータベースにアクセスしているのか分かりませんおそらくあなたがすでに考え出したことのために。

+0

ありがとう、完璧に動作します。 – user2968505

関連する問題