Jak zmusić pngcrush do zastąpienia oryginalnych plików?

15

Przeczytałem man pngcrushi wydaje się, że nie ma możliwości zmiażdżenia pliku PNG i zapisania go nad oryginałem. Chcę skompresować kilka folderów o wartości PNG, więc przydałoby się to wszystko za pomocą jednego polecenia!

Obecnie robię pngcrush -q -d tmp *.pngto ręcznie, wycinając i wklejając pliki z tmpkatalogu do oryginalnego folderu. Więc myślę, że używanie mvmoże być najlepszym sposobem? Jakieś lepsze pomysły?

DisgruntledGoat
źródło

Odpowiedzi:

17

Wszystko w jednej linii:

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

powinien to zrobić.

(Chociaż do tej pory w moich własnych testach, mniej niż połowa pngs, na których testowałem, pngcrushbyła później mniejsza, więc nie zmieniaj koloru).

frabjous
źródło
Dzięki! Ilość, którą możesz skompresować PNG, może zależeć od tego, jak zostały wykonane. Wierzę, że Photoshop w „Save for Web” ma wbudowaną formę kruszarki PNG.
DisgruntledGoat
Większość z nich została utworzona za pomocą polecenia importu ImageMagick. W miarę możliwości unikam komercyjnego oprogramowania, takiego jak Photoshop.
frabjous
4
użyj -brute dla lepszej kompresji.
Collin Anderson,
1
Inna odpowiedź jest teraz lepiej z nowszym pngcrush.
Hugo,
22

Od wersji 1.7.22 pngcrushma opcję zastępowania.

Próbować

pngcrush -ow file.png

Aby uzyskać więcej informacji, zobacz dziennik zmian :

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.
Jan
źródło