Skip to content

Transparentes png-Bild mit Python, Pillow erstellen (putalpha)

Python

Das Bildmodul der Pillow Image Processing Library (PIL) von Python stellt putalpha() bereit, um einem Bild einen Alphakanal hinzuzufügen.

Dieser Artikel hat folgenden Inhalt.

  • Verwendung von Image.putalpha()
  • Stellen Sie eine gleichmäßige Transparenz über die gesamte Fläche ein
  • Erstellen Sie mit ImageDraw einen Alphakanal
  • Vorhandenes Bild als Alphakanal verwenden

Informationen zur Installation und einfachen Verwendung von Pillow (PIL) finden Sie im following Artikel.

Importieren Sie das PIL-Bild und laden Sie das Originalbild.

ImageDraw und ImageFilter werden used, um Formen zu zeichnen und Alphakanäle zu erstellen. Sie können überspringen Werden, wenn die Bilddatei eingelesen und als Alphakanal verwendet WIRD.

from PIL import Image, ImageDraw, ImageFilter

im_rgb = Image.open('data/src/lena.jpg')

mit

Verwendung von Image.putalpha()

Der Parameter von putalpha() ist einfach alpha. Da WIRD die Ebene des Alphakanals buchstäblich auf das Originalbild gelegt.

Wenn der Modus des Originalbilds RGB (8 Bit x 3: Vollfarbe) oder L (8 Bit x 1: Schwarzweiß) ist, WIRD ein Alphakanal hinzugefügt, und wenn es RGBA oder LA ist, WIRD der Kanal aktualisiert . ursprüngliche Alpha.

Angegeben durch eine Konstante

Wenn ein 8-Bit-Ganzzahlwert (0 bis 255) auf Alpha eingestellt ist, wird die Durchlässigkeit entsprechend dem Wert auf die gesamte Oberfläche eingestellt.

0 bedeutet 100 % Transparenz, 255 bedeutet 0 % Transparenz (keine Transparenz).

Angegeben durch Bildobjekt

Wenn Sie ein Bildobjekt mit der gleichen Größe wie das Originalbild in mode=“L“ (8-Bit-Graustufen) auf Alpha setzen, können Sie den Alphakanal auf mehrere Arten einstellen.

Wie im konstanten Fall bedeutet 0 100 % Transparenz, 255 bedeutet 0 % Transparenz (keine Transparenz).

Stellen Sie eine gleichmäßige Transparenz über die gesamte Fläche ein

Wenn Sie einen ganzzahligen Wert auf Alpha setzen, wird die Transparenz entsprechend dem Wert auf die gesamte Fläche gesetzt.

Beachten Sie, dass putalpha() das Originalbild überschreibt. If SIE also das Originalbild so behalten möchten, wie es IST, VERWENDEN SIE DAS BILD, DAS SIE MIT COPY() FOLGEN HABEN.

im_rgba = im_rgb.copy()
im_rgba.putalpha(128)
im_rgba.save('data/dst/pillow_putalpha_solid.png')

massive Python-Putalpha-Wurfskissen

In diesem Beispiel ergibt sich alpha=128 ungefähr 50 % Transparenz (128/255 ~ 50 %).

Erstellen Sie mit ImageDraw einen Alphakanal

Wenn Sie einen Alphakanal mit einer einfachen Form wie einem Kreis oder Rechteck hinzufügen möchten, ist das Zeichnen im ImageDraw-Modul hilfreich. Weitere Informationen zum Zeichnen finden Sie im following Artikel. Sie können auch Polygone zeichnen.

Zeichnen Sie einen weißen Kreis auf schwarzem Hintergrund und stellen Sie ihn auf den Alphakanal ein.

im_a = Image.new("L", im_rgb.size, 0)
draw = ImageDraw.Draw(im_a)
draw.ellipse((140, 50, 260, 170), fill=255)

Alpha-Kreis des Python-Kissens

im_rgba = im_rgb.copy()
im_rgba.putalpha(im_a)
im_rgba_crop = im_rgba.crop((140, 50, 260, 170))
im_rgba_crop.save('data/dst/pillow_putalpha_circle.png')

Python Kissen putalpha-Kreis

Sie können ImageFilter verwenden, um die Grenzen zu glätten.

im_a_blur = im_a.filter(ImageFilter.GaussianBlur(4))

Alpha-Kreis des Python-Kissens

im_rgba = im_rgb.copy()
im_rgba.putalpha(im_a_blur)
im_rgba_crop = im_rgba.crop((135, 45, 265, 175))
im_rgba_crop.save('data/dst/pillow_putalpha_circle_blur.png')

Python Kissen putalpha-Kreis

In jedem Beispiel wird die Außenseite des Kreises mit crop() zu einem Rechteck geschnitten. Siehe den following Artikel für crop().

Vorhandenes Bild als Alphakanal verwenden

Sie können ein vorhandenes Bild laden und es als Alphakanal festlegen.

Unterstützen Sie Sie, ein schwarz-weißes Pferdebild zu verwenden (Beispiel für ein Scikit-Bild: skimage.data.horse() ).

Python-Alphapferdekissen

Um in diesem Beispiel das Bild in Form eines Pferdes zu erstellen, verwenden SIE ein Bild mit einem weißen Pferd und einem schwarzen Hintergrund (ein umgekehrtes Bild).

Python Kissen Alpha-Pferd Rückseite

Sobald open() das Bild liest, wird es durch resize() auf das eingefügte Bild skaliert, und der Modus wird durch convert() in ‚L‘ (Graustufen) umgewandelt.

im_a = Image.open('data/src/horse_r.png').convert('L').resize(im_rgb.size)

Python Kissen Alpha-Pferd Rückseite

im_rgba = im_rgb.copy()
im_rgba.putalpha(im_a)
im_rgba.save('data/dst/pillow_putalpha_horse.png')

Python putalpha Pferdekissen