2017-04-06 115 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