将图像流压缩到Bash中的命令行程序

时间:2017-01-07 17:00:07

标签: bash command-line pipe

我正在尝试从Image Magik管道传输JPEG文件"转换"向其他人命令行程序以制定基准。有没有办法强制一个没有内置功能的程序从管道读取而不是从磁盘读取文件?

具有此类内置功能的程序示例是" CJPEG":

convert INFILE.JPG tga:- | cjpeg -outfile OUTFILE.JPG -targa

不是"

的程序示例
jpegoptim --dest OUTFOLDER INFILE.JPG

理想情况下它会像这样工作(但它不会):

convert INFILE.JPG jpg:- | jpegoptim --dest OUTFOLDER -

我设法做到了这一点:

BASE64_IMG=$(convert INFILE.JPG jpg:- | base64)

JPG<(echo "${BASE64_IMG}" | base64 --decode) /dev/stdin | awk '{print $1}'

但我不知道该怎么办......

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用流程替换,如果,读取程序并不期望能够在输入中寻找随机位置。 (也就是说,它只能从文件的开头连续读取。)

版本不正确(程序需要编写为接受values = {1,0,1,1,0} max = 0 for value = 6,1,-1 do max = max + 2*index*value end 作为文件名意味着标准输入;它不是shell为你做的事情):

-

变为

convert INFILE.JPG jpg:- | jpegoptim --dest OUTFOLDER -

jpegoptim --dest OUTFOLDER <(convert INFILE.JPG jpg:-) 是一种特殊的<(...)语法,可以简化命名管道的使用。

bash