Ich habe einige PNG-Bilder mit Transparenz und muss Versionen mit der Bildebene erstellen, die auf einem weißen Hintergrund erstellt wurde. Ich habe verschiedene Dinge mit Image Magick "Konvertierungs" -Operationen versucht, aber entweder passiert überhaupt nichts oder ich erhalte eine Fehlermeldung. Ich möchte nicht zu einem JPG-Zwischenformular wechseln, weil ich die Artefakte nicht möchte. Natürlich ist es einfach, dies in Gimp oder Photoshop oder was auch immer zu tun, aber ich würde es wirklich lieber über die Befehlszeile schreiben, weil es viele dieser Dinge gibt.
Ein Beispiel für einen nicht funktionierenden Image Magick-Befehl ist:
convert img1.png -background white -flatten img1-white.png
Das führt zu einem Fehler.
Vielen Dank!
png
imagemagick
alpha-transparency
Spitze
quelle
quelle
Antworten:
Das funktioniert bei mir:
Dokumentationsreferenzen:
-flatten
Befehlszeilenoption-layers
Befehlszeilenoption (-flatten
entspricht-layers flatten
)quelle
-flatten
. Dadurch werden die Seiten zu einer Seite zusammengefasst.mogrify -flatten *.png
tun: Vergessen Sie für alle Fälle nicht, eine Sicherung durchzuführen. Weitere Infos hier: imagemagick.org/script/mogrify.phpBeispiel:
Fühlen Sie sich frei, durch
white
jede andere Farbe zu ersetzen, die Sie wünschen. Die Imagemagick-Dokumentation sagt Folgendes über die-alpha remove
Operation aus:quelle
-background white
nicht benötigt zu werden (wahrscheinlich jedoch für andere Farben).-alpha off
.convert image.png -background white -alpha off white.png
erzeugte ein Bild mit einem schwarzen Hintergrund.convert image.png -background "#00ff33" -alpha off 00ff33.png
produzierte einen schwarzen HintergrundDas Abflachen des Bildes und das Anwenden des Hintergrundbilds ist in ImageMagick unkompliziert
Die Reihenfolge der Befehle ist jedoch sehr wichtig
Um einen Hintergrund auf ein transparentes Bild anzuwenden und es zu reduzieren, wenden Sie zuerst den Hintergrund an, bevor Sie ihn reduzieren. Das Gegenteil funktioniert nicht.
quelle
Das einzige, was für mich funktioniert hat, war eine Mischung aus allen Antworten:
quelle
... -background "#010203" ...
anstelle von Weiß verwenden.mogrify -background white -flatten */*.png
-alpha remove
war es, was es für mich getan hatSo ersetzen Sie dasselbe Bild in allen Ordnern in einem Verzeichnis durch Weiß anstelle von Transparent:
mogrify -background white -flatten */*.png
quelle
Die Verwendung von -flatten hat mich total verrückt gemacht, weil -flatten in Kombination mit Mogrify-Ernte und Größenänderung einfach nicht funktioniert. Der offizielle und für mich einzig richtige Weg ist, den Alpha-Kanal zu "entfernen".
-alpha entfernen -alpha aus (wird bei JPG nicht benötigt)
Siehe Dokumentation: http://www.imagemagick.org/Usage/masking/#remove
quelle
convert imgWithTranspBkg.png -alpha remove -alpha off bkg.jpg resultImg.png
Im Abschnitt " Alpha entfernen " des ImageMagick-Verwendungshandbuchs wird die Verwendung der folgenden
-alpha remove
Option vorgeschlagen, z.... mit der
-background
Farbe Ihrer Wahl.Der Leitfaden besagt:
Es fügt zusätzlich den Hinweis hinzu:
Wenn Sie den Alphakanal nicht benötigen, können Sie die Größe Ihres Ausgabebilds verringern, indem Sie die
-alpha off
Option hinzufügen , z.Weitere Informationen zu anderen häufig verwendeten Techniken zum Entfernen von Transparenz finden Sie im Abschnitt Entfernen von Transparenz aus Bildern .
In diesem Abschnitt wird eine wichtige Einschränkung für die Verwendung
-flatten
als Technik zum Entfernen von Transparenz erwähnt:Wenn Sie also mehrere Bilder gleichzeitig konvertieren, z. B. Miniaturansichten aus einer PDF-Datei erstellen,
-flatten
wird dies nicht das tun, was Sie möchten (es werden alle Bilder für alle Seiten zu einem Bild reduziert). Andererseits werden bei Verwendung der-alpha remove
Technik immer noch mehrere Bilder erzeugt, von denen jedes die Transparenz entfernt hat.quelle
Es scheint, dass Ihr Befehl korrekt ist, sodass das Problem möglicherweise auf die fehlende Unterstützung für PNG () zurückzuführen ist. Sie können
convert -list configure
Folgendes überprüfen oder einfach ausprobieren:quelle
libpng12-0
installiert und funktioniert. Können Sie PNG sehen, wenn Sie dies ausführen?convert -list configure | grep \png
Dies ist nicht genau die Antwort auf Ihre Frage, aber ich habe Ihre Frage gefunden, als ich versucht habe, herauszufinden, wie der Alphakanal entfernt werden kann. Deshalb habe ich beschlossen, diese Antwort hier hinzuzufügen:
Wenn Sie den Alphakanal mit imagemagick entfernen möchten, können Sie diesen Befehl verwenden:
quelle
Wie es aussieht, hat meine Entscheidung, "Grafikmagie" über "Bildmagie" zu installieren, einige Ecken und Kanten - wenn ich echte alte "Bildmagie" neu installiere, funktioniert der obige Befehl einwandfrei.
lange später bearbeiten - Eines Tages werde ich überprüfen, ob "Graphics Magick" dieses Problem behoben hat.
quelle
Ich brauchte entweder: beide
-alpha background
und-flatten
, oder-fill
.Ich habe ein neues PNG mit einem transparenten Hintergrund und einem roten Punkt in der Mitte erstellt.
convert image.png -background green -alpha off green.png
fehlgeschlagen: Es wurde ein Bild mit schwarzem Hintergrund erstelltconvert image.png -background green -alpha background -flatten green.png
erzeugte ein Bild mit dem richtigen grünen Hintergrund.Bei einer anderen Datei, die ich umbenannt habe
image.png
, konnte ich natürlich nichts tun. Für diese Datei stellte ich fest, dass die Farbe der transparenten Pixel "# d5d5d5" war, also füllte ich diese Farbe mit Grün:convert image.png -fill green -opaque "#d5d5d5" green.png
ersetzte die transparenten Pixel durch das richtige Grün.quelle
convert image.png -background green -alpha background -alpha off green.png
oderconvert image.png -background green -alpha background -alpha remove green.png
oderconvert image.png -background green -flatten green.png
Option ohne Befehlszeile: Öffnen Sie die PNG-Datei in Windows Paint und klicken Sie auf Speichern.
quelle
Dadurch wird ein Bild erstellt, bei dem nur das erste mit Transparenz über dem zweiten platziert wird
fand ursprünglich den Tipp auf diesem Beitrag
quelle
Um tatsächlich den Alpha - Kanal aus der Datei zu entfernen, verwenden Sie die Alpha - off - Option:
quelle
Ich habe diese Frage und Antworten gesehen, die mir wirklich helfen, aber dann musste ich sie für viele Dateien ausführen. Falls Sie also mehrere Bilder (PNG-Bilder) in einem Ordner haben und dies für alle tun möchten:
quelle
Es ist -alpha aus, NICHT -alpha entfernen! Das Hochladen des iOS App Store schlägt fehl, wenn ein Symbol einen Alphakanal enthält !!
So geht's: mogrify -alpha off * .png
quelle