如何base64编码图像在Linux bash / shell

我试图在一个shell脚本中base64编码图像,并将其放入variables:

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

我也尝试过这样的事情:

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

但仍然没有成功。

我想要做这样的事情:

 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 

我发现这个http://www.zzzxo.com/q/answers-bash-base64-encode-script-not-encoding-right-12290484.html

但仍然没有成功。

您需要使用cat来获取名为“DSC_0251.JPG”的文件的内容 ,而不是文件名。

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

但是, base64可以从文件本身读取:

 test=$( base64 DSC_0251.JPG ) 

有一个Linux的命令: base64

 base64 DSC_0251.JPG >DSC_0251.b64 

将结果分配给variables使用

 test=`base64 DSC_0251.JPG` 

单行结果:

 base64 -w 0 DSC_0251.JPG 

对于HTML

 echo "data:image/jpeg;base64,$(base64 -w 0 DSC_0251.JPG)" 

作为文件:

 base64 -w 0 DSC_0251.JPG > DSC_0251.JPG.base64 

在variables:

 IMAGE_BASE64="$(base64 -w 0 DSC_0251.JPG)" 

HTMLvariables中:

 IMAGE_BASE64="data:image/jpeg;base64,$(base64 -w 0 DSC_0251.JPG)" 

请参阅: http : //www.greywyvern.com/code/php/binary2base64

html的基础64:

 file="DSC_0251.JPG" type=$(identify -format "%m" "$file" | tr '[AZ]' '[az]') echo "data:image/$type;base64,$(base64 -w 0 "$file")"