Farben auf einem Bild beibehalten und gleichzeitig volle Transparenz einstellen

Ich möchte ein Bild aus einer Karte erstellen, in der jedes Land in einer anderen Farbe eingefärbt ist, in der die Grenzen schwarz sind und in dem jede Farbe außer Schwarz vollständig transparent ist, ohne die RGB-Informationen zu verlieren.

Meine Tools sind The Gimp oder irgendetwas, das unter Linux installiert werden kann, und kleine Programmierung (wenn ich das PNG-Format vollständig verstehen muss, werde ich keinen Erfolg haben).

Mein aktuelles Bild ist bis auf die Transparenzinformationen perfekt. Meine aktuellen Experimente mit GIMP haben immer dazu geführt, dass RGB-Informationen beim Exportieren des Bildes nach PNG oder GIF verloren gegangen sind.

Irgendwelche Hinweise? Vielen Dank.

Wenn Alpha 0 ist, gibt es keine RGB-Informationen im PNG- oder GIF-Format. Was Sie verlangen, ist nicht möglich.
Ich würde es nicht wagen, jemanden mit solchen Angelegenheiten zu konfrontieren, da mein Wissen praktisch null ist; dennoch möchte ich Sie fragen, ob Sie sich dessen halbwegs sicher sind, oder sich ohne Zweifel sicher sind, damit ich mich nicht weiter mit diesem Gedankengang aufhalte. Danke und beste Grüße in jedem Fall.
Wäre es möglich, eine Transparenz von 99,9% einzustellen und RGB-Informationen beizubehalten?
Um Ihre Bedürfnisse besser zu verstehen: Wie würden Sie ein solches Bild verwenden? ZB in einem Programm, das Sie schreiben, oder für eine Webseite?
in einer Javascript-Webseite/Programm. Ich habe mich dafür entschieden, eine Kopie der Bilddaten im Speicher zu behalten und eine weitere transparente Kopie auf der von mir verwendeten HTML 5-Leinwand auszugeben. Dann überprüfe ich die Speicherkopie, da jeder Versuch, eine hohe Transparenz auf der Leinwand einzustellen, dann auch Pixelfarbprüfungen auf der Leinwand zu Fehlern führt. Es wäre einfacher, wenn all diese Arbeiten zunächst im Image erledigt würden, aber ich kann mit 10 Zeilen Code leben, wenn nicht.
Ich bin mir sicher, dass Alpha bei 100 % = keine RGB-Daten in PNG- und GIF-Formaten. Das Einfügen von RGB-Daten, die niemals im Bild sichtbar sind, würde die Dateigröße unnötig erhöhen. Daher werfen die Formate die nutzlosen Daten weg. Aber ja, Alpha mit 99,9 % würde RGB-Daten behalten, selbst bei 0,1 % Deckkraft.
GIMP hat dafür eine Option im Export-PNG-Dialog, und ich hatte die Funktion damals selbst codiert. Selbst wenn die Spezifikationen besagen, dass die Farbe nicht vorhanden sein sollte, gilt dies für in GIMP gespeicherte Dateien, bei denen die Option "Farbwerte aus transparenten Pixeln speichern" beim Exportieren des PNG festgelegt wurde. Bei GIF-Dateien wird die Transparenz durch eine bestimmte (und nur ) Farbindex, so dass die Farbinformation tatsächlich verloren geht.
@Scott Für GIF und palettiertes PNG ist dies korrekt, da ein einzelner Paletteneintrag als "transparente Farbe" gilt. Bei 32-Bit-PNG-Bildern wird jedoch jedes Pixel als 4 Bytes für R, G, B, A gespeichert - auch wenn A es ist 0 können Werte für R,G,B angegeben werden, sonst würden die Daten nicht ausgerichtet und wären deutlich schwerer lesbar. Die meisten Programme setzen diese Bytes alle auf 0, um die Komprimierungsrate zu erhöhen, aber das ist für ein gültiges PNG-Bild nicht notwendig.

Antworten (1)

Im GIMP-Exportdialog für PNG-Dateien gibt es ein Kontrollkästchen mit der Aufschrift "Farbwerte aus transparenten Pixeln speichern". Ich habe es nicht getestet, aber das sollte tun, was Sie wollen.

Es scheint keine gleichwertige Option für GIF zu geben.

Weitere Informationen zu Exportdateiformatoptionen: http://docs.gimp.org/en/gimp-images-out.html#gimp-using-fileformats-export-dialog

Ja, das sollte es tun, unabhängig von @Scotts Kommentaren.