Уменьшить разрядность файлов PNG из командной строки

Какую команду или серию команд я могу выполнить из интерфейса командной строки, чтобы рекурсивно пройти по дереву каталогов и уменьшить разрядность всех файлов PNG в этом дереве с 24 до 16 бит / с? Команды должны сохранять альфа-слой и не должны увеличивать размер файла PNG - на самом деле уменьшение было бы предпочтительным.

У меня есть система на базе OSX и я знаком с find команда, поэтому я действительно заинтересован в поиске подходящей команды утилиты PNG.

2 ответа

Решение

AFAIK единственный формат PNG, который поддерживает альфа-слой, это PNG-24; Сокращение PNG до другого формата может потребовать указания прозрачного цвета в CLUT, который не даст вам желаемого результата.

Из списка возможностей на сайте PNG:

  • Поддержка 8- и 16-битных сэмплов (то есть 24-битных и 48-битных)
  • полная альфа-прозрачность в 8- и 16-битном режимах, а не просто прозрачность включения-выключения, как GIF

... что я прочитал, чтобы обозначить, что что-либо кроме PNG-24 или PNG-48 не поддерживает полную альфа-прозрачность.

  1. Установить финка

  2. Скажите "fink install imagemagick" (может быть "ImageMagick")

  3. "convert -depth 16 old / foo.png new / foo.png"

  4. Если это сделало то, что вы хотите, оберните это в поиске вызова и будьте счастливы. Если нет, скажите "convert -help" и RTF-ImageMagick-M.:)

  5. Необязательно: "fink install pngcrush" и запускайте его как второй проход после прохода преобразования.

Другие вопросы по тегам