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')
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')
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)
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')
Sie können ImageFilter verwenden, um die Grenzen zu glätten.
im_a_blur = im_a.filter(ImageFilter.GaussianBlur(4))
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')
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() ).
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).
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)
im_rgba = im_rgb.copy()
im_rgba.putalpha(im_a)
im_rgba.save('data/dst/pillow_putalpha_horse.png')