Преобразование изображения в несжатый PNG из командной строки

у меня есть сжатое изображение PNG compressed.png. Я могу преобразовать его в несжатый PNG decompressed.png использование GIMP (сохранение в PNG и установка уровня сжатия в 0). Как это можно сделать в командной строке (Линукс)?

Я помню, как делал это в прошлом, используя утилитыs convert, но я забыл как. Я пробовал некоторые вещи, которые, как я думал, должны работать на основе в документация:

  • convert compressed.png -compress None decompressed.png
  • convert compressed.png +compress decompressed.png
  • convert compressed.png -quality 0 decompressed.png
  • convert compressed.png -quality 00 decompressed.png

просто написал обычный сжатый PNG.

в сторону: почему вы хотите несжатый PNG?

некоторых случаях:

  • вы хотите поддерживать эффективные (двоичные) различия данных изображения, в то же время используя другие функции формата PNG (в отличие от хранения необработанных данных изображения или формат BMP.)
  • вы хотите сжать несколько png вместе в архиве tarball или 7z, но хотите продолжать использовать функции PNG. Если изображения достаточно похожи, это может дать лучшую степень сжатия, чем сжатие по отдельности.
  • полезно в качестве базового размера для тестирования PNG оптимизаторов.
17
задан Mechanical snail
25.01.2023 5:19 Количество просмотров материала 3182
Распечатать страницу

3 ответа

ImageMagick всегда сжимает PNG-файлы. Худшее сжатие можно получить с помощью:

convert -verbose -quality 01 input.png output.png

но это зависит от содержимого изображения (0 будет использовать сжатие Хаффмана, которое иногда сжимается лучше, чем zlib).

Вы можете попробовать другие инструменты, такие как pngcrush (http://pmt.sourceforge.net/pngcrush/), чтобы отключить сжатие:

pngcrush -force -m 1 -l 0 input.png output.png

которые создают файл того же размера, что и GIMP при использовании уровня сжатия 0 (еще несколько байт или меньше).

некоторые примеры размеров (для фотографического PNG, 1600x1200):

  • оригинал: 1,693,848 байт.
  • после IM: 2,435,983 байта.
  • после GIMP: 5,770,587 байт.
  • после pngcrush: 5,802,254 байта.
3
отвечен MV. 2023-01-26 13:07

процитировать документ ImageMagick: не все комбинации уровня сжатия, стратегии и типа фильтра PNG могут быть получены с помощью опции-quality. Для более точного управления можно использовать параметр-define.

например, эта команда должна создать несжатый файл PNG (RGB):

convert INFILE \
-define png:compression-level=0 \
-define png:compression-filter=0 \
-define png:color-type=2 \
OUTFILE.png

вы можете получить предупреждение, что это безобидная ошибка. Он будет по-прежнему производить правильный ПНГ. http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=20257

пример изображения:

112233 112233 112233 112233
445566 445566 445566 445566
778899 778899 778899 778899
aabbcc aabbcc aabbcc aabbcc

IDAT кусок PNG-файла, созданного с IM:

49444154081d013400cbff00
11223311223311223311223300
44556644556644556644556600
77889977889977889977889900
aabbccaabbccaabbccaabbcc
7d6f14b9...

тем не менее, в некоторых случаях (например, групповое сжатие) стоит проверить формат с меньшими затратами, например TARGA (.tga).

5
отвечен Meyer 2023-01-26 15:24

Мне нравится набор инструментов netpbm, он разработан в традициях "программных инструментов" UNIX: "писать программы, которые делают что-то одно и делают это хорошо".

вы можете сделать то, что вы спросили, как это:

< in.png pngtopnm > image.pnm
< in.png pngtopnm -alpha > alpha.pnm
<image.pnm pnmtopng -alpha alpha.pnm -compression 0 > out.png
rm image.pnm alpha.pnm

вы можете потерять некоторые метаданные из исходного файла png.

это кажется немного сложным, из-за того, как мы обрабатываем альфа-канал.

Netpbm-это набор инструментов для работы с графическими изображениями, включая конвертацию между различными форматами. В пакете более 220 отдельных инструментов, включая конвертеры для более чем 80 графических форматов.

1
отвечен Sam Watkins 2023-01-26 17:41

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх