如何在命令行中使用 base64 解码图像字符串?

如何在命令行中使用 base64 解码图像字符串?

假设我有一张图片,image1.jpg
我可以使用工具对其进行编码base64

myImgStr=$(base64 image1.jpg)

我尝试使用以下命令对其进行解码:

base64 -i -d $myImgStr > image2.jpg

或者

echo -n $myImgStr | base64 -d -i > image2.jpg

但在这两种情况下我都会收到以下错误:

base64: extra operand ‘/9j/4AAQSkZJRgABAQAAAQABAAD/7QCEUGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAGgcAmcAFHNH’ Try 'base64 --help' for more information.
任何帮助都将受到赞赏。

答案1

实用功能base64从一个以参数形式提供名称的文件或标准输入中读取输入。它从不从命令行参数读取输入。对于您的情况,要解码存储在变量中的字符串,您应该在 的标准输入上提供该字符串base64

如果您使用 Bash,那么您可以使用此处字符串:

base64 -d <<< "$myImgStr" > image2.jpg

如果你的 shell 不接受这里的字符串,你可以使用:

echo "$myImgStr" | base64 -d > image2.jpg

(请注意 周围的双引号"$myImgStr"。除非有充分的理由不这样做,否则您应该始终对变量扩展使用双引号。)

相关内容