Вы можете сделать это так:
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