我们的问题是,使用uploaded_io
中的Base64编码的jpeg图像文件,如何从中恢复jpeg文件?
编码uploaded_io
由canvas.toDataURL("image/jpeg")
生成。这是uploaded_io
看起来像:
uploaded_io = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2....."
在ruby / rails 4中,base64
编码的文件可以用以下方式解码:
require 'base64'
decoded = Base64.decode64(uploaded_io.sub(/.+,/, '')) #removed file header 'data:image/jpeg;base64,' as suggested
我们添加了gem mini_magick
(v3.5.0)并在我们的计算机上安装了image magick
库。做了以下事情:
image = MiniMagick::Image.new(decoded)
但image
不是jpeg图片文件,对.type
和.size
反应不佳。无需操纵图像文件,我们不确定此处是否真的需要天气mini_magick
/ image magick
。
答案 0 :(得分:1)
一个突出的问题是你解码图像然后删除会导致问题的标题。
image = MiniMagick::Image(decoded.sub(/.+,/, ''))
我使用Ruby Base64
进行了一个简单的测试编码/解码图像,一切都按预期工作。
irb
示例:
require 'base64'
e = Base64.encode64(IO.read('/path/to/jpeg'))
d = Base64.decode64(e)
File.open("test.jpg", "w") { |f| f.write(d) }
test.jpg
应该是有效的文件。通过执行file test.jpg
确认。