如何将字符串格式的PNG(如下所示)解析为Ruby中的文件?
\x89PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x01,\x00\x00\
添加我在评论中留下的更多详细信息。
如果PNG存在于文件系统上,我可以使用File.open打开该文件。我想要File.open创建相同的对象,但我需要从字符串创建它,而不是文件系统。
最终,我想将其分配给Paperclip附件并让它将对象识别为png。
答案 0 :(得分:3)
File
只是IO
的一个实现。 Ruby有另一个IO
实现,它可以读/写被调用的字符串,显然是StringIO
。
file = StringIO.new("\x89PNG\r\n\x1A\n\x00\x00\x00\rIHDR\x00\x00\x01,\x00\x00\")
您的评论建议您需要使用paperclip
。在这种情况下,paperclip通常(取决于版本)需要文件名和mime类型,因此在将文件分配到回形针附件属性之前添加它们。
file.content_type = "image/png"
file.original_filename = "image.png"
object.attachment = file
以上适用于最新的回形针。仍然比写入临时文件更好。
答案 1 :(得分:2)