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

s.o*_*ene 11 command-line batch

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

myImgStr=$(base64 image1.jpg)
Run Code Online (Sandbox Code Playgroud)

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

base64 -i -d $myImgStr > image2.jpg
Run Code Online (Sandbox Code Playgroud)

或者

echo -n $myImgStr | base64 -d -i > image2.jpg
Run Code Online (Sandbox Code Playgroud)

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

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

Ale*_*exP 25

该实用程序base64从其名称作为参数提供的文件中或从标准输入中读取其输入。它从不从命令行参数读取其输入。在您的情况下,要解码存储在变量中的字符串,您应该在base64.

如果您使用 Bash,则可以使用 here-string:

base64 -d <<< "$myImgStr" > image2.jpg
Run Code Online (Sandbox Code Playgroud)

如果您的 shell 不接受 here-strings,您可以随时使用:

echo "$myImgStr" | base64 -d > image2.jpg
Run Code Online (Sandbox Code Playgroud)

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