Question

Je suis en train de réduire programme (lossy) la taille du fichier des fichiers PNG et GIF. Dans le cadre de ce que je dois réduire le nombre de couleurs dans les images. Je ne veux pas réduire toutes les images à une seule valeur de couleurs, de sorte que ce que je fais est; obtenir le nombre de couleurs uniques dans l'image, puis; diviser ce nombre par 2 pour réduire le nombre de couleurs de moitié.

Le problème est que cela ne fonctionne pas. En utilisant ImageMagic il est trop lent et ne réduit pas la taille du fichier, sauf si l'image a sous quelques centaines de couleurs uniques. L'utilisation GraphicsMagick entraîne toujours une valeur de couleurs unique sous 255, peu importe combien de couleurs étaient dans l'image originale. Un autre problème avec GraphicsMagick est s'il y a des pixels transparents dans l'image qu'il remplace les couleurs perdues avec transparence.

Toute aide serait la bienvenue avec reconnaissance, Merci.

Était-ce utile?

La solution 3

Le premier problème, GraphicsMagick peut être compilé en utilisant 8 bits, 16 bits ou 32 niveaux quantiques bits. Ma version est compilée dans 8 bits (valeur par défaut), cela signifie que le nombre maximum de couleurs qui peut être affectée à une image est de 256 couleurs uniques (3 * 3 * 2, 1 des bits bleus est supprimé, car la boîte de l'oeil humain « t voir correctement). De toute évidence, GraphicsMagick peut traiter des images avec plus de couleurs que cela, mais lors de la réduction des couleurs, il ne peut réduire à 256 couleurs ou moins. Grandes quantums de pixels provoquent GraphicsMagick soit plus lent et nécessite plus de mémoire. Par exemple, en utilisant des quantums de pixel de seize bits provoque GraphicsMagick pour exécuter 15% à 50% plus lente (et prendre deux fois plus de mémoire) que quand il est construit pour supporter quantums de pixel de huit bits.

Deuxième problème; la transparence manipulation des images PNG, j'utilisait une version antérieure de GraphicsMagick (1.1 je pense), de toute façon, quand je suis passé à 1.3 ce problème n'est plus présent qui me dit qu'il était un bogue dans GraphicsMagick 1.1 qui a causé cela.

Autres conseils

La réduction du nombre de couleurs est utile que si

  1. l'image peut alors utiliser une palette au lieu de stocker la couleur de chaque pixel
  2. la taille d'un index de la palette est plus petite que la taille d'une couleur
  3. le format d'image prend en charge la taille de la palette

Je pense que vous ne pouvez obtenir 1 bits, 4 bits, 8 bits, donc 2 couleurs, 16 couleurs ou 256 couleurs dans ces formats. Je pense que si vous demandez plus, il vous suffit tronqués à 256. Si vous demandez moins, il ne vient pas utiliser toute la palette.

Avez-vous envisagé la conversion en JPEG et en jouant avec le réglage de la qualité? Vous vous retrouvez avec plus beau contrôle de grain de lossy-ness. L'inconvénient est que si les images ne sont pas des photos, mais on dirait qu'ils ont beaucoup de couleurs, de sorte qu'ils pourraient être.

Peut-être choisir 1, 4, 8 bits si elle est proche de ce que vous voulez et jpeg si elle a beaucoup de couleurs.

Je pense que l'installation de ImageMagick vous êtes peut-être après la quantification:

http://www.imagemagick.org/Usage/quantize/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top