2014-01-08 13 views
6

rmagickを使って画像をファイルに書きたいと思います。私のコードrmagickを使ってrubyでファイルに画像データを書き込む

im = "base64encodedstring" 
image = Magick::Image.from_blob(Base64.decode64(im) 
image[0].format = "jpeg" 
name ="something_temp" 
path = "/somepath/" + name 
File.open(path, "wb") { |f| 
    f.write(image[0]) 
} 

以下で考えると、私はまたf.write(image)を使用しようとしました。しかし、ファイルに書き込まれるものは#<Magick::Image:0x7eff0587f838>です。これの理由は何ですか?

+0

としてだけでなく、マレック答えを、あなたはファイル内の文字列を取得する理由*理由*がある - それを与えられたオブジェクトを文字列に変換します(これは '.to_s'を使っていると思います)。' String'型以外のオブジェクトデータを確実に格納するためには使用できません。バイナリデータを格納する方法はたくさんあります。たとえば、 'RMagick'の場合は、提供されている' read'メソッドと 'write'メソッドを使用する方法があります。 –

答えて

3

これは動作するはずです:あなたは `STRING`を期待` File.write`と呼ばれているので、

image[0].write(path) 
+0

OPのパスには拡張子がないので、 'image [0] .write(path){self.format =" jpeg "}' –

関連する問題