Accueil > A propos de Pngcrush

A propos de Pngcrush

Article original écrit par Glenn Randers-Pehrson et accessible ici.
Traduction par , publiée le 28 octobre 2013.
Licence : Cette traduction est mise à disposition sous un contrat Creative Commons Creative Commons License

Pngcrush est un optimiseur de fichiers PNG (Portable Network Graphics). Il peut être exécuté en ligne de commande depuis une fenêtre MS-DOS, ou en ligne de commande depuis un système UNIX ou Linux.

Son objectif principal est de réduire la taille du flux de données PNG IDAT en essayant différents niveaux de compression et méthodes de filtrage PNG. Il peut également être utilisé pour enlever des morceaux auxiliaires indésirables ou ajouter certains fragments de fichier dont gAMA, tRNS, iCCP , et d'autres informations textuelles.

Pngcrush n'est pas affecté par le bogue zlib-1.1.3 "double-free" lorsque il est lié statiquement au code zlib fourni, puisque par défaut il détecte et rejette toute tentative "double-free". Il génère simplement un message "Erreur de décompression" et rejette le fichier.

Pngcrush est un outil open source et peut être utilisé, modifié et redistribué par n'importe qui sans payer de frais. La licence, qui est intégré dans le fichier pngcrush.c, est équivalente mais non identique à la licence libpng trouvé dans le fichier libpng png.h.

Le code source de pngcrush est disponible ici . et les exécutables binaires, compilés par des bénévoles tiers et pas toujours à jour, sont disponibles ici . Pngcrush utilise libpng et zlib, qui sont tous deux inclus dans la distribution source de pngcrush. Ils sont légèrement modifiés:

  • Le fichier pngconf.h de libpng est modifié en ajoutant "#include pngcrush.h" qui est utilisé
    • pour "#define out" certaines parties non utilisées de la bibliothèque
    • #define PNG_SETJMP_NOT_SUPPORTED
    • #define PNG_ABORT()
    • pour définir la taille de la mémoire tampon IDAT avec une grande valeur et
  • zlib est modifié pour définir la macro TOO_FAR à 32767 dans deflate.c

Si vous préférez, vous pouvez compiler seulement pngcrush.c à partir de la distribution source pngcrush et l'exécuter avec les bibliothèques standards libpng et zlib, qui se trouvent sur le site web PNG, www.libpng.org/pub/png/ . Si vous faites cela, pngcrush.h ne sera pas inclus, et:

  • Le fragment de fichier iTXt ne sera pas pris en charge si votre version de libpng ne le supporte pas. Libpng va prendre en charge par défaut le fragment de fichier iTXt avec la version 1.4.0.

  • pngcrush sera vulnérable à diverses conditions de débordement qui ont été résolus en Août 2004 si vous utilisez une version de libpng non patchée antérieure à la version 1.2.7/1.0.17.

  • pngcrush sera vulnérable au bug double-free zlib-1.1.3, si vous liez pngcrush avec zlib-1.1.3 et une version de libpng, par exemple toutes les versions 1.0.x qui n'ont pas la constante PNG_USER_MEM_SUPPORTED activée.

  • TOO_FAR sera définie à 4096 au lieu de 32767 dans deflate.c,

    ce qui peut entraîner des fichiers légèrement plus volumineux et une exécution légèrement plus rapide.

  • En outre, vous ne pourrez pas lire les fichiers PNG erronés avec «trop de IDAT».

Des binaires précompilés pour Windows (fonctionnent dans la fenêtre MS-DOS, compilés avec DJGPP) et les plates-formes RISC OS (qui peuvent ne plus être à jour) sont disponibles ici

Un projet basé sur pngcrush existe, développé par Cosmin Truta, avec un ensemble de fonctionnalités et un espace de recherche légèrement différents. Voir http://www.cs.toronto.edu/~cosmin/pngtech/optipng/"

Pngcrush est une application en ligne de commande. Si vous préférez une interface graphique gérant le glisser-déposer, plusieurs sont disponibles, y compris certains qui intègrent pngcrush avec d'autres compresseurs/optimiseurs d'images en ligne de commande:

  • ImageOptim pour Mac, libre, licence GPLv2
  • Trimage pour Linux, Windows, Mac, libre, licence MIT
Des erreurs ? Merci de me les signaler : | Accueil du site traduction.cc