165 votes

Comment encoder une image en base64 dans linux bash / shell

J'essaie de coder en base64 une image dans un shell script et de la mettre dans une variable :

test="$(printf DSC_0251.JPG | base64)"
echo $test
RFNDXzAyNTEuSlBH

J'ai aussi essayé quelque chose comme ça :

test=\`echo -ne DSC_0251.JPG | base64\`

mais toujours sans succès.

Je veux faire quelque chose comme ça :

curl -v -X POST -d '{"image":$IMAGE_BASE64,"location":$LOCATION,"time_created":$TIMECREATED}' -H 'Content-type: text/plain; charset=UTF8' http://192.168.1.1/upload

J'ai trouvé ceci http://www.zzzxo.com/q/answers-bash-base64-encode-script-not-encoding-right-12290484.html

mais je n'ai toujours pas réussi.

218voto

chepner Points 54078

Vous devez utiliser cat pour obtenir le contenu du fichier nommé 'DSC_0251.JPG', plutôt que le nom du fichier lui-même.

test="$(cat DSC_0251.JPG | base64)"

Cependant, base64 peut lire le fichier lui-même :

test=$( base64 DSC_0251.JPG )

41voto

David Jashi Points 2626

Il existe une commande Linux pour cela : base64

base64 DSC_0251.JPG >DSC_0251.b64

Pour affecter le résultat à une variable, utilisez

test=`base64 DSC_0251.JPG`

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X