ImageMagick: compression maximale sans perte pour le format PNG?
J'aimerais atteindre un montant maximum de compression lors de l'enregistrement d'une compression sans perte PNG en utilisant ImageMagick. Je suis en train de faire la conversion par lots de plusieurs Psd.
J'ai essayé un peu les choses, mais il me semble que la résultante d'image au format PNG n'est pas aussi forte que l'image originale, bien que ma femme ne peut pas le voir.
Ce sont les arguments que je suis en train de jouer avec:
convert -depth 24 -define png:compression-filter=1 \
-define png:compression-level=9 -define png:compression-strategy=2
Selon:
http://www.imagemagick.org/script/command-line-options.php#define
Et http://www.w3.org/TR/PNG-Filters.html
Qui signifie:
- filtre de compression est de 1 (Sous -)
- max niveau de compression 9
- stratégie de compression est de 2 huffman_only (donc pas de filtrage, bien que ce filtre de compression doit être sans perte)
Selon la documentation: "valeurs valides vont de 0 à 4, de la signification par défaut, filtré, huffman_only, rle, et fixe de compression ZLIB stratégie. Si vous utilisez une ancienne zlib qui ne prend pas en charge Z_RLE (avant 1.2.0) ou Z_FIXED (avant 1.2.2.2), les valeurs 3 et 4, respectivement, va utiliser la librairie zlib stratégie par défaut à la place."
BTW, Mes images sont 960x720 pixels.
(Si j'utilise par défaut de la stratégie de compression à 0, j'obtiens des fichiers volumineux. Il se pourrait que la compression-filtre de 9 et de la compression de la stratégie de 0 sont la production de la plus petite taille des images, mais je ne suis toujours pas sûr si c'est sans perte ou non).
Questions:
- Est-ce la compression sans perte? Si non, où est l'erreur?
- Aucune idée de la façon de parvenir à une meilleure compression sans perte?
source d'informationauteur Mladen Adamovic
Vous devez vous connecter pour publier un commentaire.
Je ne voudrais pas compter sur ImageMagick seulement, lors de la compression Png (sauf si il y a des raisons hors de votre contrôle qui vous oblige à ImageMagick).
Une bonne alternative à comparer ImageMagick résultats contre, est
pngcrush
ou une version plus récente successeur,optipng
.Ces deux n'a en général d'obtenir de meilleurs résultats quand il s'agit de l'optimisation et de compression de ImageMagick. Souvent, ils sont également plus lente que la messagerie instantanée, car ils peuvent par force brute sur les différentes méthodes, et ensuite les garder le plus petit résultat.
Après avoir dit que, maintenant, avec ImageMagick...
La manière standard pour définir PNG qualité avec
convert
est avec le-quality {level}{filter}
paramètre.Vous êtes en utilisant la plus fine des contrôles de gain en utilisant une combinaison de
-define png:...
contrôles.-quality
pour la PNG est très contrairement au JPEG le réglage de la qualité (qui est simplement un entier de0
à100
).Pour le PNG c'est composé -- composé par deux chiffres:
Le premier chiffre ({niveau}) est (en grande partie) la compression zlib niveauet il peut aller de
0
à9
.(Toutefois, le paramètre de
0
a une signification particulière: lorsque vous l'utilisez, vous aurez la compression de Huffman, pas de compression zlib niveau 0. C'est souvent mieux... Bizarre, mais vrai).Le deuxième chiffre ({filtre}) est le PNG codage de données type de filtre (avant il est compressé):
En pratique, cela se traduit par:
-quality 00
) est généralement la plus appropriée.-quality 05
) est généralement le meilleur.Afin de le traduire dans votre syntaxe de ligne de commande, essayez le paramètre suivant:
Dernier, si je veux vraiment comparer les différentes (mais proches) netteté d'une image après compression, j'ai souvent faire usage de Fred Weinstein est merveilleux
flicker_cmp
script.Laissez votre femme test... 🙂
P. S.: Ici est un bon guide sur les aspects techniques de compression PNG.
L'algorithme de compression deflate utilise un 65K fenêtre de l'historique. PNG compression tend à être plutôt lent car le processus de comparer les séquences d'octets dans la compression de flux avec les personnes dans la fenêtre.
Vous pouvez contrôler la vitesse de la compression en limitant la recherche de la fenêtre. Vous pouvez rechercher seulement la moitié de la mémoire tampon pour les matches à accélérer le processus (comme le risque de compression plus faible).
En JPEG, le compromis entre qualité et taille. En PNG compression, le compromis entre la vitesse et la taille.
Dans tous les cas, le PNG processus de compression est toujours sans perte.
J'ai passé une demi-journée à jouer. Je n'ai redimensionner les images à 360x240px. J'ai obtenu le meilleur résultat avec:
La meilleure compression que j'ai eu était comme suit:
Les résultats:
Si quelqu'un connaît une meilleure façon, dites-moi s'il vous plaît. Je ne pouvais pas trouver.