Comment faire pour que pngcrush écrase les fichiers originaux?

15

J'ai lu man pngcrushet il semble qu'il n'y ait aucun moyen d'écraser un fichier PNG et de l'enregistrer sur l'original. Je veux compresser plusieurs dossiers en PNG, il serait donc utile de tout faire avec une seule commande!

Actuellement, je suis en train de pngcrush -q -d tmp *.pngcouper-coller manuellement les fichiers du tmprépertoire dans le dossier d'origine. Je suppose donc que l'utilisation mvpourrait être la meilleure façon de procéder? De meilleures idées?

Chèvre mécontente
la source

Réponses:

17

Tout sur une seule ligne:

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

devrait le faire.

(Bien que jusqu'à présent dans mes propres tests, moins de la moitié des pngs pngcrushsur lesquels j'ai testé étaient plus petits par la suite, alors ne me impressionnez pas.)

frabjous
la source
Merci! La quantité de compression des fichiers PNG peut dépendre de la façon dont ils ont été créés. Je crois que "Save for Web" de Photoshop a une certaine forme de broyeur PNG intégré.
DisgruntledGoat
La plupart des miennes ont été créées avec la commande d'importation d'ImageMagick. J'évite autant que possible les logiciels commerciaux comme Photoshop.
frabjous
4
utilisez -brute pour une meilleure compression.
Collin Anderson
1
L' autre réponse est maintenant meilleure avec le pngcrush plus récent.
Hugo
22

Depuis la version 1.7.22, pngcrusha une option d'écrasement.

Essayer

pngcrush -ow file.png

Voir Changelog pour plus d'informations:

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
la source