405 Stimmen

Ersetzen der Transparenz in PNG-Bildern durch weißen Hintergrund

Ich habe einige PNG-Bilder mit Transparenz, und ich muss Versionen erstellen, bei denen die Bildebene auf einem weißen Hintergrund angeordnet ist. Ich habe verschiedene Dinge mit den "Konvertierungs"-Operationen von Image Magick ausprobiert, aber entweder passiert gar nichts oder ich erhalte einen Fehler. Ich möchte nicht in eine JPG-Zwischenform gehen, weil ich die Artefakte nicht haben möchte. Natürlich ist es einfach, dies in Gimp oder Photoshop oder was auch immer zu tun, aber ich würde wirklich lieber Skript es von der Kommandozeile, weil es viele dieser Dinge.

Ein Beispiel für einen nicht funktionierenden Image Magick-Befehl ist:

convert img1.png -background white -flatten img1-white.png

Dies führt zu einem Fehler.

Gracias.

527voto

Rok Kralj Punkte 43551
-background white -alpha remove -alpha off

Beispiel:

convert image.png -background white -alpha remove -alpha off white.png

Bitte ersetzen Sie white mit jeder anderen Farbe, die Sie wollen. Die Imagemagick-Dokumentation sagt Folgendes über die -alpha remove Betrieb:

Dieser Vorgang ist einfach und schnell und erledigt die ohne zusätzlichen Speicherbedarf oder andere Nebenwirkungen, die mit einer mit alternativen Techniken zum Entfernen von Transparenz verbunden sind. I bevorzugte Methode zur Entfernung von Bildtransparenz.

311voto

remosu Punkte 4959

Das funktioniert bei mir:

convert -flatten img1.png img1-white.png

Referenzen zur Dokumentation:

48voto

acpmasquerade Punkte 1820

Das Verflachen von Bildern und das Anwenden von Hintergrundbildern ist in ImageMagick ein Kinderspiel

Die Reihenfolge der Befehle ist jedoch sehr wichtig

Um einen beliebigen Hintergrund auf ein transparentes Bild anzuwenden und es zu glätten, wenden Sie zuerst den Hintergrund an und glätten ihn dann. Umgekehrt funktioniert das nicht.

$ convert sourceimage.png -background BackgroundColor -flatten destinationimage.png

23voto

db0 Punkte 3519

Die einzige Lösung, die bei mir funktionierte, war eine Mischung aus allen Antworten:

convert in.png -background white -alpha remove -flatten -alpha off out.png

19voto

Julian Punkte 970

So ersetzen Sie das gleiche Bild in allen Ordnern eines Verzeichnisses durch weiß statt durchsichtig:

mogrify -background white -flatten */*.png

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X