【发布时间】:2015-11-17 17:28:17
【问题描述】:
我们的问题是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。
【问题讨论】:
-
能否将base64解码后的值保存到扩展名为.jpg的文件中,看看能否查看?
-
不确定如何将解码保存到文件中。是否保存解码为变量
img。只有img.size返回一个整数。img.type和img.content_type返回undefined method的错误。 -
已经有人发布了关于如何将解码的字节数组保存到文件的答案。我已经独立尝试在解码后将图像文件中的 base64 部分保存到文件中,我能够在照片查看器应用程序中以 jpg 格式查看文件
-
Wand Maker,用File.open('my_img.jpeg', 'wb') {|f| f.write(img)}保存解码并查看成功。 decode64 有效。 (img被砍头)。但是不确定为什么图像属性不可用。
标签: ruby ruby-on-rails-4 imagemagick base64