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

How to convert a jpeg to an png with djpeg and pnmtopng?

练习是使用 djpeg 和 pnmtopng 将 jpeg 图像转换为 png。将其转换为 pnm 的第一步非常有效,但 pnmtopng 不起作用。

第一步工作得很好,程序创建了一个 pnm 文件。 [文件]https://i.imgur.com/tpMHDRb.png

#!/bin/sh
for file in *.jpeg; do
djpeg -pnm -outfile "$file".pnm  "$file"
pnmtopng  *.pnm
done

但是 pnmtopng 做了一些链接,但没有任何反应 [航站楼]https://i.imgur.com/FMDujkr.jpg 完美的案例是来自这个的 png 文件..

你可以这样做:

for file in *.jpeg; do
    djpeg -pnm "$file" | pnmtopng > "$file.png"
done

您现有代码的问题是 pnmtopngstdout 上写入 PNG 文件,在您的情况下是终端,因此我已将其重定向到 > 的文件.在重定向输入和输出的同时,我们也可以做同样的事情,让 jpeg 写在 stdout 上并将其挂钩到 pnmtopng 中,它可以从 stdin 读取 - 这样我们就不会不需要将中间 PNM 文件写入磁盘。


或者像这样使用 ImageMagick

magick mogrify -format png *.jpeg