练习是将jpeg图像转换为带有djpeg和pnmtopng的png。将其转换为 pnm 的第一步效果很好,但 pnmtopng 不起作用。
第一步工作得很好,程序创建了一个pnm文件。 [文件]https://i.stack.imgur.com/T1vTn.png
#!/bin/sh
for file in *.jpeg; do
djpeg -pnm -outfile "$file".pnm "$file"
pnmtopng *.pnm
done
但是 pnmtopng 做了一些链接,什么也没发生 [终端]https://i.stack.imgur.com/xnbgr.jpg 完美的情况是来自此的 png 文件。
你可以这样做:
for file in *.jpeg; do
djpeg -pnm "$file" | pnmtopng > "$file.png"
done
您现有代码的问题在于pnmtopng
将 PNG 文件写入stdout
,在您的情况下是终端,所以我已将其重定向到带有>
的文件。在重定向输入和输出时,我们不妨做同样的事情,让jpeg
写入stdout
并将其挂接到可以从stdin
读取的pnmtopng
中 - 这样我们就不需要将中间 PNM 文件写入磁盘。
或者像这样使用ImageMagick:
magick mogrify -format png *.jpeg