2014-01-08 48 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

除了馬立克氏回答,* *理由爲什麼你得到的文件中的字符串,是因爲你所謂的'File.write'一個希望將'String' - 它將提供的對象轉換爲字符串(我認爲這是通過'.to_s'),並且不能用於可靠地存儲除'String'類型以外的對象數據。有很多方法來存儲二進制數據 - 對於'RMagick',一種方法是使用提供的'read'和'write'方法。 –

回答

3

這應該工作:

image[0].write(path) 
+0

OP的路徑沒有擴展類型,所以你需要像'image [0] .write(path){self.format =「jpeg」}' –