0

Ich versuche, die Dateigröße von PNG- und GIF-Dateien programmgesteuert zu reduzieren (verlustbehaftet). Als Teil davon muss ich die Anzahl der Farben in den Bildern reduzieren. Ich möchte nicht alle Bilder auf einen einzigen Farbwert reduzieren, also was ich mache ist; Erhalte die Anzahl der eindeutigen Farben im Bild. Teilen Sie diese Zahl durch 2, um die Anzahl der Farben um die Hälfte zu reduzieren.Benötigen Sie Hilfe, die ImageMagick/Graphicsmagick-Farben Option zu verstehen

Das Problem ist, dass dies nicht funktioniert. Bei Verwendung von ImageMagic ist es viel zu langsam und reduziert die Dateigröße nicht, es sei denn, das Bild hat unter einigen hundert eindeutigen Farben. Die Verwendung von GraphicsMagick führt immer zu einem eindeutigen Farbwert unter 255, unabhängig davon, wie viele Farben im Originalbild enthalten waren. Ein weiteres Problem bei GraphicsMagick ist, dass wenn transparente Pixel im Bild vorhanden sind, die verlorenen Farben durch transparent ersetzt werden.

Jede Hilfe wäre dankbar willkommen, Danke.

Antwort

0

Erstes Problem kann GraphicsMagick 8 Bit, 16 Bit oder 32-Bit-Quantenniveaus mit kompiliert werden. Meine Version ist in 8 Bit (Standard) kompiliert, das bedeutet, dass die maximale Anzahl von Farben, die einem Bild zugewiesen werden können, 256 eindeutige Farben ist (3 * 3 * 2, 1 der blauen Bits wird entfernt, weil das menschliche Auge kann Ich sehe es nicht richtig. Natürlich kann GraphicsMagick Bilder mit mehr Farben verarbeiten, aber wenn Farben reduziert werden, kann es nur auf 256 oder weniger Farben reduziert werden. Größere Pixelquanten führen dazu, dass GraphicsMagick langsamer läuft und mehr Speicher benötigt. Zum Beispiel bewirkt die Verwendung von 16-Bit-Pixelquanten, dass GraphicsMagick um 15% bis 50% langsamer läuft (und doppelt so viel Speicher belegt) als bei der Erstellung von Acht-Bit-Pixelquanten.

Zweites Problem; Transparenz Handhabung in PNG-Bildern, ich habe eine frühere Version von GraphicsMagick (1.1 glaube ich), jedenfalls, als ich auf 1.3 aktualisiert dieses Problem ist nicht mehr vorhanden, die mir sagt, dass es ein Bug in GraphicsMagick 1.1 war, die dies verursacht.

1

die Anzahl der Farben zu reduzieren, ist nur dann sinnvoll, wenn

  1. das Bild dann eine Palette anstelle des Speicherns der Farbe für jedes Pixel
  2. die Größe eines Palettenindex kleiner ist als die Größe eines Anwendungs ​​kann Farbe
  3. das Bildformat unterstützt die Palette Größe

ich glaube, Sie nur 1 Bit bekommen, 4-Bit-, 8-bit, so 2-Farben, 16 Farben oder 256 Farben in denen Formate. Ich denke, wenn Sie mehr verlangen, werden Sie nur auf 256 abgeschnitten. Wenn Sie weniger verlangen, wird nicht die gesamte Palette verwendet.

Haben Sie erwogen, in JPEG zu konvertieren und mit der Qualitätseinstellung zu spielen? Sie erhalten eine feinere Kontrolle der Verlustquote. Der Nachteil ist, wenn die Bilder keine Fotos sind, aber es klingt, als hätten sie viele Farben, so könnten sie sein.

Vielleicht wählen Sie 1, 4, 8 Bit, wenn es nahe ist, was Sie wollen und JPEG, wenn es viele Farben hat.

+0

Hallo, vielen Dank für Ihre Antwort, Thats, was ich dachte, aber ImageMagick können Sie aus irgendeinem Grund einen unbegrenzten Farben Wert angeben. Ich möchte, dass die Bilder im selben Format bleiben, auch JPEG würde dazu führen, dass die Bilder ihre Transparenz verlieren. Wissen Sie etwas über das GM-Transparenzproblem, das ich habe? Danke nochmal für deine Zeit. – toc777

+0

Ist es nur in GIF?In GIF gibt es einen Paletteneintrag, der als transparente Farbe gekennzeichnet ist - vielleicht ordnet ihre Farbabstimmung versehentlich verloren gegangene Farben zu. Dies könnte passieren, weil tatsächlich eine Farbe zugewiesen wurde, die transparent ist (es ist keine Farbe mit 0 Alpha). Es klingt irgendwie wie ein Käfer. Wenn Sie Windows verwenden, testen Sie unser kostenloses Imaging-SDK für .NET http://atalsoft.com/photofree. –

+0

Nein, es passiert nur mit PNG-Dateien. Ich verwende Linux und kann .NET für dieses Projekt nicht verwenden. Danke für Ihre Hilfe. – toc777

1

Ich denke, die ImageMagick-Anlage sind Sie nach Quantisierung sein könnte:

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

+0

Danke dafür, aber ich habe bereits alle verfügbaren Dokumente gelesen. Mein Hauptproblem ist jetzt, GraphicsMagick daran zu hindern, undurchsichtige Pixel durch transparente Pixel zu ersetzen. Dies passiert nicht mit ImageMagick, der einzige Weg, wie ich es in GraphicsMagick stoppen kann, ist, den Farbraum auf transparent zu setzen; Das Problem ist, dass dies die Größe der Datei erhöht. – toc777

+0

Würden Sie das Bild flacher machen, um die Transparenz nach der Operation zu entfernen? – Orbling

+0

Sorry Orbling, ich verstehe nicht. Ich möchte die Transparenz des Bildes erhalten. – toc777

Verwandte Themen