2017-04-06 2 views
2

J'ai une image codée en base64. Je suis coller les premiers caractèresCréation d'un fichier image à partir de données base64

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

que je fais ci-dessous pour en rubis

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

Après quand je suis l'ouverture « image.jpeg », Il donne erreur

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

J'ai aussi essayé

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

Dans ce cas aussi, j'ai eu la même erreur.

Qu'est-ce que je fais mal?

+0

'data: image/jpeg; base64,' au début de la chaîne encodée était à l'origine de ce problème. J'ai juste dû enlever cela et tout a bien fonctionné. – Rndomcoder

Répondre

1
File.open('shipping_label.gif', 'wb') do|f| 
    f.write(Base64.decode64(base_64_encoded_data)) 
end 

Cette réponse est de: How to save a base64 string as an image using ruby

+0

Vous devriez voter pour fermer la question si vous pensez qu'il s'agit d'un doublon. – Stefan

+0

La question n'a pas été dupliquée. J'utilisais déjà le mode binaire pour écrire le fichier. Mon problème était les 23 premiers caractères de la chaîne encodée i.e 'data: image/jpeg; base64,' donc je devais juste les enlever et ensuite le décoder. – Rndomcoder