2017-04-06 144 views
2

我有一个base64编码的图像数据。我在粘贴前几个字符从base64数据创建图像文件

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

我做以下,以它的红宝石

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 

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

我在做什么错?

+0

'数据:图像/ JPEG; BASE64,' 在编码串的开头被引起此问题。我只需要删除,然后一切正常。 – Rndomcoder

回答

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

+0

如果您认为这是重复的,您应该投票结束该问题。 – Stefan

+0

问题不重复。我已经使用二进制模式编写文件。我的问题是编码字符串的前23个字符,即'data:image/jpeg; base64',因此我只需将其删除并解码即可。 – Rndomcoder