使用Rmagick在Ruby中将图像数据写入文件

6
我想使用rmagick将图像写入文件。以下是我的代码:
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>。这是什么原因?

除了Marek的答案之外,你得到文件中的字符串的原因是因为你调用了File.write,它期望一个String - 它将提供的对象转换为字符串(我认为这是通过.to_s完成的),不能可靠地用于存储除String类型以外的对象数据。有很多存储二进制数据的方法 - 在RMagick的情况下,一种方法是使用提供的readwrite方法。 - Neil Slater
1个回答

4

这应该可以正常工作:

image[0].write(path)

OP的路径在扩展名中没有类型,所以您需要像image[0].write(path) { self.format = "jpeg" }这样的东西。 - Neil Slater

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接