Wie bekomme ich pngcrush, um Originaldateien zu überschreiben?

15

Ich habe es durchgelesen man pngcrushund es scheint, dass es keine Möglichkeit gibt, eine PNG-Datei zu komprimieren und über dem Original zu speichern. Ich möchte mehrere Ordner im Wert von PNGs komprimieren, daher wäre es nützlich, alles mit einem Befehl zu erledigen!

Momentan mache ich pngcrush -q -d tmp *.pngdann manuell das Ausschneiden und Einfügen der Dateien aus dem tmpVerzeichnis in den Originalordner. Also denke ich, dass die Verwendung mvder beste Weg ist? Irgendwelche besseren Ideen?

Verärgerte Ziege
quelle

Antworten:

17

Alles in einer Zeile:

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

Sollte es tun.

(Obwohl bisher in meinen eigenen Tests weniger als die Hälfte der Pngs, auf denen ich getestet habe, pngcrushdanach kleiner waren, färben Sie mich unbeeindruckt.)

schäbig
quelle
Vielen Dank! Wie stark Sie die PNGs komprimieren können, hängt davon ab, wie sie erstellt wurden. Ich glaube, in Photoshops "Save for Web" ist eine Art PNG-Brecher eingebaut.
DisgruntledGoat
Die meisten von mir wurden mit dem Import-Befehl von ImageMagick erstellt. Ich vermeide kommerzielle Software wie Photoshop, wann immer dies möglich ist.
Frabjous
4
Verwenden Sie -brute für eine bessere Komprimierung.
Collin Anderson
1
Das andere Antwort ist jetzt mit neuerem pngcrush besser.
Hugo
22

Hat seit Version 1.7.22 pngcrusheine Überschreiboption.

Versuchen

pngcrush -ow file.png

Weitere Informationen finden Sie im 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.
Jan
quelle