2009-08-25 6 views
4

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

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

ответ

2

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

В списке функций на сайте PNG в:

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

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

+0

Спасибо - я не знал об этом ограничении PNG, поэтому вы немного спасли меня. – teabot

+1

@teabot Подпалые PNGs * do * поддерживают полную альфа-прозрачность, см. Http://pngquant.org – Kornel

3
  1. Установка Fink

  2. Say "Fink установить ImageMagick" (может быть "ImageMagick")

  3. "конвертировать -depth 16 старый/новый/foo.png foo.png"

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

  5. Дополнительно: «fink install pngcrush» и запустите это как второй проход после прохождения конверта.