如何使用 djpeg 和 pnmtopng 将 jpeg 转换为 png?



练习是将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

最新更新