1

Ich habe ein PNG-Bild mit Transparenz bekam:Wenden Sie die Farbverlaufsmaske auf ein Bild an, das mit ImageMagick bereits transparent ist?

original.png
Original

Jetzt möchte ich ImageMagick anwenden einen diagonalen Gradienten zu seinem Alphakanal nutzen. Ich meine damit, dass seine Deckkraft in der oberen linken Ecke bleibt und allmählich in der unteren rechten Ecke völlig durchsichtig wird. Wie folgt aus:

result.png
Result

Also im Grunde möchte ich einen Gradienten erzeugen, und verwenden, die als Maske für das Bild. Aber das Bild hat bereits einen eigenen Alpha-Kanal (Transparenz). Hier ist eine Visualisierung, was ich versuche:

Operation

(Original und hier auf Schachbrett für visiblity angezeigte Ergebnis, aber ich meine tatsächliche Transparenz)

Ich glaube, ich verstehe, wie eine diagonale Gradienten zu erzeugen, (Der Befehl barycentric gradient ist dafür sehr nützlich). Dies erzeugt jedoch einen Farbverlauf in den Farbkanälen , d. H. Einen Farb- oder Graustufengradienten. Während ich den Gradienten auf dem Alpha Kanal anwenden möchte.

Von der IM manual Ich verstehe, die -compose CopyOpacity Operator könnte dafür verwendet werden. Allerdings scheint dies kopieren das Alpha von der Maske auf mein Bild. Ich muss diese Farbverlaufsfarbe auf meinem vorhandenen Alphakanal anwenden, also muss der Alphakanal meines Bildes mal mal mit der Graustufenfarbe aus dem Farbverlaufsbild multipliziert werden.

Was wäre die richtige IM-Befehlszeile, um den oben angezeigten Vorgang auszuführen?

Antwort

1

Hier ist ein Weg, Sie könnten es tun:

convert tree.png -write MPR:orig -alpha extract \ 
    \(+clone -colorspace gray -fx "1-j/h" \)  \ 
    -compose multiply -composite -write alpha.png \ 
    MPR:orig +swap -compose copyopacity -composite result.png 

enter image description here

enter image description here

Die -write alpha.png kann verzichtet werden - es zeigt nur die Alpha-Schicht für die Fehlersuche und zur Illustration.

Die MPR ist nur eine temporäre Kopie des Originalbildes, das ich im Speicher halte, während ich mit dem Alphakanal herumspiele und den ich gegen Ende zurückbringe. Der Farbverlauf im Alpha-Kanal wird von der -fx generiert und ich habe den Farbraum zuerst grau gemacht, so dass er nur einmal anstelle von drei Mal ausgeführt werden muss.

Wenn Sie die Abmessungen des Baumes Bild vorne wusste, konnte man das Teil in Klammern mit ersetzen:

-size WxH gradient:black-white 

aber ich weiß nicht, die Abmessungen vorne und ich möchte keine Sekunde convert Befehl, um sie zu bekommen, so klopfe ich im Grunde den Alpha-Kanal des ursprünglichen Bildes, um eine Leinwand die richtige Größe zu erhalten und füllen Sie es mit -fx.

+1

Danke, die 'MPR:' und '-fx' Verwendung waren neu für mich! Inspiriert von deiner Lösung mache ich es jetzt so: 'convert tree.png \ (+ klon -alpha-extrakt \ (+ klon -fx" 1- (i + j * w/h)/(2 * w) " \) -compose multiply -composite \) -compose CopyOpacity -composite result.png 'wobei' -fx "1- (i + j * w/h)/(2 * w)" 'den diagonalen Farbverlauf erzeugt – RocketNuts

Verwandte Themen