将图像流管道化到Bash中的命令行程序
我正在尝试将一个JPEG文件从ImageMagik的“convert”传输到other中的其他命令行程序,以作为基准。有没有办法强迫一个没有内置功能的程序从管道中读取而不是从磁盘中读取文件 具有此类内置功能的程序示例为“CJPEG”: 一个不包含以下内容的程序示例: 理想情况下,它会像这样工作(但事实并非如此): 但我还是做到了:将图像流管道化到Bash中的命令行程序,bash,command-line,pipe,Bash,Command Line,Pipe,我正在尝试将一个JPEG文件从ImageMagik的“convert”传输到other中的其他命令行程序,以作为基准。有没有办法强迫一个没有内置功能的程序从管道中读取而不是从磁盘中读取文件 具有此类内置功能的程序示例为“CJPEG”: 一个不包含以下内容的程序示例: 理想情况下,它会像这样工作(但事实并非如此): 但我还是做到了: BASE64_IMG=$(convert INFILE.JPG jpg:- | base64) 以及: JPG如果读取程序不希望能够搜索到输入中的随机位置,则可以使
BASE64_IMG=$(convert INFILE.JPG jpg:- | base64)
以及:
JPG如果读取程序不希望能够搜索到输入中的随机位置,则可以使用进程替换(也就是说,它只能从文件开头连续读取)
不正确的版本(需要编写程序以接受-
作为文件名,表示标准输入;这不是shell为您做的事情):
变成
jpegoptim --dest OUTFOLDER <(convert INFILE.JPG jpg:-)
我的jpegoptim
版本具有从标准输入读取的选项--stdin
。它还处理从标准输入读取的-
。您使用的版本号是什么?jpegoptim v1.4.1 x86_64-pc-linux-gnu
。imagemagick的转换已经生成了优化的jpeg。如果它可以从文件读取,您可以使用name即使按照上面给出的步骤,我也不能使它正常工作。
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}'
convert INFILE.JPG jpg:- | jpegoptim --dest OUTFOLDER -
jpegoptim --dest OUTFOLDER <(convert INFILE.JPG jpg:-)
mkfifo input # Create a named pipe called "ipnut"
convert INFILE.JPG jpg:- > input & # Start writing to it in the background
jpegoptim --dest OUTFOLDER input # Read from the named pipe; convert blocks until jpegoptim opens the pipe for reading
rm input # Clean up after you are done