Convertir l'image en PNG non compressé de la ligne de commande

J'ai une image compressed.png PNG compressed.png . Je peux le convertir en un PNG non compressé decompressed.png utilisant GIMP (en sauvegardant PNG et en configurant le niveau de compression à 0). Comment cela peut-il se faire sur la ligne de commande (Linux)?

Je me souviens avoir fait cela dans le passé à l'aide de Convert de Imagemagick , mais j'ai oublié comment. J'ai essayé certaines choses que je pensais fonctionner en fonction de la documentation :

  • convert compressed.png -compress None decompressed.png
  • convert compressed.png +compress decompressed.png
  • convert compressed.png -quality 0 decompressed.png
  • convert compressed.png -quality 00 decompressed.png

Vient d'écrire un PNG compressé ordinaire.

A part: pourquoi voudriez-vous un PNG non compressé?

Certains cas:

  • Vous souhaitez prendre en charge les diffs efficaces (binaires) des données d'image, tout en utilisant d'autres fonctionnalités du format PNG (par opposition au stockage des données d'image brutes ou BMP).
  • Vous souhaitez compresser plusieurs PNG ensemble dans une archive tarball ou 7z, mais souhaitez continuer à utiliser les fonctionnalités PNG. Si les images sont suffisamment similaires, cela peut donner un meilleur taux de compression que de compresser individuellement.
  • Utile comme taille de base pour tester les optimiseurs PNG.

ImageMagick compressera toujours les fichiers PNG. La pire compression que vous pouvez obtenir est l'utilisation:

 convert -verbose -quality 01 input.png output.png 

Mais cela dépend du contenu de l'image (le 0 utilisera la compression Huffman qui comprimera parfois mieux que le zlib).

Vous pouvez essayer d'autres outils comme pngcrush ( http://pmt.sourceforge.net/pngcrush/ ) pour désactiver la compression:

 pngcrush -force -m 1 -l 0 input.png output.png 

Qui créent un fichier de même taille créé par GIMP lors de l'utilisation du niveau de compression 0 (quelques octets de plus ou moins).

Quelques exemples de taille (pour un PNG photographique, 1600×1200):

  • Original: 1 693 848 octets.
  • Après IM: 2 435 983 octets.
  • Après GIMP: 5,770,587 octets.
  • Après pngcrush: 5 802 254 octets.

Pour citer le document ImageMagick: Toutes les combinaisons de niveau de compression, stratégie et type de filtre PNG ne peuvent être obtenues en utilisant l'option -quality. Pour un contrôle plus précis, vous pouvez utiliser l'option -define.

Par exemple, cette commande devrait créer un fichier PNG non compressé (RVB):

 convert INFILE \ -define png:compression-level=0 \ -define png:compression-filter=0 \ -define png:color-type=2 \ OUTFILE.png 

Vous pouvez obtenir un avertissement, qui est un bug inoffensif. Il produira toujours un png correct. http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=20257

Exemple d'image:

 112233 112233 112233 112233 445566 445566 445566 445566 778899 778899 778899 778899 aabbcc aabbcc aabbcc aabbcc 

Brochure IDAT du fichier PNG créé avec IM:

 49444154081d013400cbff00 11223311223311223311223300 44556644556644556644556600 77889977889977889977889900 aabbccaabbccaabbccaabbcc 7d6f14b9... 

Cependant, pour certains cas (p. Ex. Compression de groupe), il pourrait être intéressant de tester un format avec moins de frais généraux, par exemple TARGA (.tga).

J'aime la suite d'outils netpbm, elle est conçue dans la tradition "outils logiciels" d'UNIX: "écris des programmes qui font une chose et le font bien".

Vous pouvez faire ce que vous avez demandé comme ceci:

 < in.png pngtopnm > image.pnm < in.png pngtopnm -alpha > alpha.pnm <image.pnm pnmtopng -alpha alpha.pnm -compression 0 > out.png rm image.pnm alpha.pnm 

Vous risquez de perdre certaines métadonnées du fichier png original.

Il semble un peu compliqué, en raison de la façon dont nous traitons le canal alpha.

Netpbm est une boîte à outils pour la manipulation d'images graphiques, y compris la conversion d'images entre différents formats. Il existe plus de 220 outils distincts dans le package, y compris les convertisseurs pour plus de 80 formats graphiques.