如何将图像文件存储在 bash 变量中?

Lib*_*Wen 14 bash binary images cat variable

在我使用以下命令后,

pngString="$(cat example.png)"    
echo -n "$pngString" > tmp.png
Run Code Online (Sandbox Code Playgroud)

我无法将 tmp.png 作为 PNG 文件打开。当我$pngString用来存储图像文件时,可能会丢失一些信息。

所以问题是:如何在 bash 脚本中使用变量存储完整的图像信息?

mik*_*996 20

你是对的,echo公司似乎并没有很好地处理二进制文件。我怀疑空字符过早地破坏了流。

您可以转换一些基于 ASCII 的格式的图片信息。例如,这是与base64

$ pic=`base64 pic.jpeg`
$ echo $pic | base64 --decode > pic2.jpeg
$ diff pic*
$ echo $?
0
Run Code Online (Sandbox Code Playgroud)

  • 在我的 bash 系统中,我不得不用引号将变量括起来,可能是因为 base64 可以包含空格:`echo "$pic" | base64 --decode > pic2.jpeg` (3认同)