Как заставить pngcrush перезаписать оригинальные файлы?

15

Я прочитал, man pngcrushи кажется, что нет способа раздавить файл PNG и сохранить его поверх оригинала. Я хочу сжать несколько папок PNG, поэтому было бы полезно сделать все это одной командой!

В настоящее время я делаю pngcrush -q -d tmp *.pngзатем вручную вырезать файлы из tmpкаталога в исходную папку. Я думаю, что использование mvможет быть лучшим способом? Есть идеи получше?

DisgruntledGoat
источник

Ответы:

17

Все в одной строке:

for file in *.png; do pngcrush "$file" "${file%.png}-crushed.png" && mv "${file%.png}-crushed.png" "$file"; done

должен сделать это.

(Хотя до сих пор в моих собственных тестах менее половины pngs, на которых я тестировал, pngcrushбыли меньше, поэтому цвет меня не впечатлил.)

радостный
источник
Благодарность! Количество, которое вы можете сжать PNG, может зависеть от того, как они были сделаны. Я полагаю, что в Photoshop «Save for Web» есть встроенная дробилка PNG.
DisgruntledGoat
Большинство из них были созданы с помощью команды импорта ImageMagick. Я по возможности избегаю коммерческого программного обеспечения, такого как Photoshop.
радостный
4
используйте -brute для лучшего сжатия.
Коллин Андерсон
1
Другой ответ теперь лучше с новой Pngcrush.
Хьюго
22

Начиная с версии 1.7.22, pngcrushимеется опция перезаписи.

Пытаться

pngcrush -ow file.png

Смотрите Changelog для получения дополнительной информации:

Version 1.7.22  (built with libpng-1.5.6 and zlib-1.2.5)
  Added "-ow" (overwrite) option.  The input file is overwritten and the
    output file is just used temporarily and removed after it is copied
    over the input file..  If you do not specify an output file, "pngout.png"
    is used as the temporary file. Caution: the temporary file must be on
    the same filesystem as the input file.  Contributed by a group of students
    of the University of Paris who were taking the "Understanding of Programs"
    course and wished to gain familiarity with an open-source program.
январь
источник