Réduire encore plus les PNG

30 07 2009

Suite à une conversation avec Ashmex sur Twitter et à la lecture d’un article sur Wikipedia, voici un script sous Linux pour réduire encore plus la taille des PNG avant publication.

Pré-requis

Ce script reprend l’idée développé sur Wikipedia. Il fait appel aux outils suivants :

  • OptiPNG → sudo apt-get install optipng,
  • AdvanceCOMP → sudo apt-get install advancecomp,
  • PNGOut → récupérez la version statique de PNGOut pour Linux dans les portages de JonoF’s, copiez l’exécutable dans votre répertoire bin (ex. : cp pngout-linux-pentium4-static ~/bin/pngout) et donnez-lui les bon droits (chmod 700 ~/bin/pngout),
  • DeflOpt → installez tout d’abord Wine (sudo apt-get install wine), .

OptiPNG

Pour installer OptiPNG, il suffit de faire :

sudo apt-get install optipng

AdvanceCOMP

Pour installer AdvanceCOMP (et notamment advdef), il suffit de faire :

sudo apt-get install advancecomp

PNGOut

PNGOut n’est pas disponible par apt-get mais il existe un portage pour Linux. Pour l’installer, il faut :

Note : le script s’attend à trouver l’exécutable “pngout”.

DeflOpt

DeflOpt n’est, lui non plus, pas disponible par apt-get. De plus, il n’existe pas de portage Linux de l’outil. Pas de panique puisque Wine permet de le faire tourner sans problème :

Notes :

  • le script s’attend à trouver l’exécutable “deflopt”,
  • vous aurez peut-être besoin des paquet p7zip et p7zip-full pour lire l’archive contenant l’exécutable (sudo apt-get install p7zip p7zip-full)

Le script minpng

Voici le script minpng :

#!/bin/bash
for fichier in $*
do
  printf "%-32.32s %8d → " $(basename $fichier) $(du -b "$fichier" | cut -f1)

  (which optipng && optipng -o7 "$fichier") > /dev/null
  (which advdef  && advdef  -z4 "$fichier") > /dev/null
  (which pngout  && pngout  -ks "$fichier") > /dev/null
  (which deflopt && deflopt     "$fichier") > /dev/null

  printf "%8d\\n" $(du -b "$fichier" | cut -f1)
done

Installation du script

Pour installer ce script, il suffit de :

  • créer un fichier minpng dans ~/bin,
  • copier le script ci-dessous dedans,
  • donner les bons droits (chmod 700 ~/bin/minpng).

Utilisation du script

Le script s’utilise en ligne de commande de la façon suivante :

minpng *.png

Les versions originales des fichiers PNG sont remplacées par leurs versions réduites.

L’absence d’un utilitaire sera totalement ignorée, aucun message d’erreur ne sera affiché.

Le but étant d’obtenir le PNG le plus léger possible, minpng peut passer beaucoup de temps sur chaque fichier.


Actions

Information

2 responses

9 09 2010
dnartreb89

Hello Zigazou !

Très intéressant ce script, le gain est notable sans perte de qualité. Mais c’est long l’optimisation !🙂 . La durée du script décourage un petit peu de son utilisation.

Mais je vais continuer à me pencher dessus. A bientôt.

9 09 2010
zigazou

sans perte de qualité

Oui, c’était le but de ce script😉

Mais c’est long l’optimisation

Ça, par contre, c’était pas recherché😉
En fait, ce script est intéressant quand tu travailles sur le thème d’un site web et que tu cherches à optimiser la tailles des différentes images intervenant. C’est vrai qu’il l’est moins pour une utilisation courante. Si je me souviens bien, il n’y a qu’une seule étape d’optimisation qui prennent réellement du temps (je ne sais plus laquelle par contre). Tu peux essayer de la repérer et voir si en la retirant le script remplit toujours son office pour toi.

Pour d’autres optimisations sur le PNG, manuelles cette fois, j’ai ceci https://zigazou.wordpress.com/2009/05/12/quand-le-png-est-plus-fort-que-le-jpeg/

@+

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s




%d blogueurs aiment cette page :