Как конвертировать jpeg в png с помощью djpeg и pnmtopng? - PullRequest
2 голосов
/ 13 мая 2019

Упражнение состоит в том, чтобы преобразовать изображение в формате JPEG в формат PNG, используя djpeg и pnmtopng. Первый шаг для преобразования его в 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 из этого ..

1 Ответ

2 голосов
/ 13 мая 2019

Вы можете сделать это так:

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

Проблема с вашим существующим кодом заключается в том, что pnmtopng записывает файл PNG на stdout, который является Терминалом в вашем случае, поэтому я перенаправилэто в файл с >.При перенаправлении ввода и вывода мы могли бы сделать то же самое, и jpeg записать в stdout и подключить это к pnmtopng, который может читать из stdin - таким образом, нам не нужно писать промежуточный PNMфайл на диск.


Или используйте ImageMagick , например:

magick mogrify -format png *.jpeg
...