Zuschneiden von Bildern auf ein abgerundetes Rechteck mit ImageMagick

Zuschneiden von Bildern auf ein abgerundetes Rechteck mit ImageMagick

Wie kann ich ImageMagick verwenden, um ein Bild wieDaszu einem PNG mit einem abgerundeten Rechteck auf transparentem Hintergrund?

Nicht alle Bilder im Set haben saubere Ränder, daher arbeite ich lieber mit einer standardisierten Maske als mit etwas wie -trim. Ich möchte das ImageMagick-Äquivalent von CSS verwenden, border-radius: 4.75% / 3.5%um eine Maske auf die Karte anzuwenden und das Ergebnis als PNG mit einem abgerundeten Rechteck zu speichern.

Antwort1

Nachdem ich einige Stunden in der Dokumentation von ImageMagick gestöbert hatte, fand ich den Trick.

Erstellen Sie zunächst ein abgerundetes Rechteck, das als Maske dient.

convert -size 672x936 xc:black -fill white -draw "roundRectangle 0,0,672,936 32,33" generatedcardmask.png

Wenn Sie sich für die Details interessieren, wie das funktioniert, lesen Sie weiterdie allgemeine Befehlszeilenstruktur von ImageMagick,Masken erstellenUndFormen zeichnen.

Die Breiten und Höhen der Ecken des abgerundeten Rechtecks ​​habe ich wie folgt berechnet:

  • Breite: 672px * 4,75 % = 31,92px (auf 32px gerundet)
  • Höhe: 936px * 3,5% = 32,76px (aufgerundet auf 33px)

Dadurch wird das folgende PNG generiert:

generiertes Bild

Dann kann ich das Originalbild nehmen und diese PNG-Maske verwenden, um die Alphawerte zu ersetzen:

convert tsp-156-fortune-thief.jpg generatedcardmask.png -alpha Off -compose CopyOpacity -composite -colorspace RGB test.png

Das Ergebnis kann ich aus Copyright-Gründen hier nicht veröffentlichen, aber ihr könnt es gerne ausprobieren, basierend aufdieses Bild.

verwandte Informationen