【问题标题】:Creating image file from base64 data [duplicate]从base64数据创建图像文件[重复]
【发布时间】:2017-04-06 07:33:45
【问题描述】:

我有一个 base64 编码的图像数据。我正在粘贴前几个字符

string='data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD     /2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopG   R8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgo......'

我正在用 ruby​​ 跟踪它

decoded_string=Base64.decode64 string
output_file = Tempfile.new(['image','.jpeg'])
output_file.binmode
output_file.write image 

之后,当我打开“image.jpeg”时,出现错误

Error interpreting JPEG image file (Not a JPEG file: starts with 0x75 0xab)

我也试过了

File.open('a.jpeg', 'wb') do|f|
   f.write decoded_string
end 

在这种情况下,我也遇到了同样的错误。

我做错了什么?

【问题讨论】:

  • 'data:image/jpeg;base64,' 在编码字符串的开头导致了这个问题。我只需要删除它,然后一切正常。

标签: ruby base64 jpeg binmode


【解决方案1】:
File.open('shipping_label.gif', 'wb') do|f|
  f.write(Base64.decode64(base_64_encoded_data))
end

这个答案来自:How to save a base64 string as an image using ruby

【讨论】:

  • 如果您认为这是重复问题,您应该投票结束该问题。
  • 问题不重复。我已经在使用二进制模式来写入文件。我的问题是编码字符串的前 23 个字符,即“data:image/jpeg;base64”,所以我只需要删除它们然后解码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-17
  • 2019-01-01
  • 2020-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多