
Das Image-Modul der Bildverarbeitungsbibliothek Pillow (PIL) von Python stellt paste() zum Einfügen eines Bildes zur Verfügung
Informationen zur Installation und einfachen Verwendung von Pillow (PIL) finden Sie im following Artikel.
Dieser Artikel hat folgenden Inhalt.
- Normale Paste
- Geben Sie die einzufügende Position an
- Maskenbild verwenden
Bild aus PIL importieren und das Basisbild (Hintergrundbild) und das einzufügende Bild öffnen.
Mit ImageDraw und ImageFilter wird das zuletzt beschriebene Maskenbild gesetzt. Sie können es weglassen, wenn Sie es einfach einfügen.
from PIL import Image, ImageDraw, ImageFilter
im1 = Image.open('data/src/rocket.jpg')
im2 = Image.open('data/src/lena.jpg')
Normale Paste
Rufen Sie die Methode paste() aus dem Hintergrundbild auf und legen Sie das Bild zum Einfügen fest.
Standardmäßig WIRD das Bild an der Position eingefügt, an der die obere linke Seite des eingefügten Bildes der Ursprung (oben links) des Basisbildes IST.
im1.paste(im2)
im1.save('data/dst/rocket_pillow_paste.jpg', quality=95)
paste() überschreibt das Basisbild selbst. Wenn Sie auch das Originalbild behalten möchten, verwenden Sie das kopierte Bild mit copy().
im1 = Image.open('data/src/rocket.jpg')
im2 = Image.open('data/src/lena.jpg')
back_im = im1.copy()
back_im.paste(im2)
back_im.save('data/dst/rocket_pillow_paste.jpg', quality=95)
Geben Sie die einzufügende Position an
Die einzufügende Position wird durch ein Tupel (x-Koordinate oben links, y-Koordinate oben links) im zweiten Parameterfeld angegeben.
back_im = im1.copy()
back_im.paste(im2, (100, 50))
back_im.save('data/dst/rocket_pillow_paste_pos.jpg', quality=95)
Wenn sich das eingefügte Bild über den Bereich des Basisbilds hinaus erstreckt, WIRD der sich erstreckende Bereich ignoriert.
back_im = im1.copy()
back_im.paste(im2, (400, 100))
back_im.save('data/dst/rocket_pillow_paste_out.jpg', quality=95)
Maskenbild verwenden
Wenn als dritte Parametermaske ein Maskenbild angegeben WIRD, kann das eingefügte Bild nicht nur in einem Rechteck, sondern in verschiedenen Formen ausgeschnitten und eingefügt werden.
Das Bild, das als Maskenbild used Werden can, hat dieselbe Größe wie das eingefügte Bild und sterben following drei Modustypen.
- 1: 1-Bit-Bild (Binärbild)
- L: 8-Bit-Graustufenbild
- RGBA: Bild mit Alphakanal
Wenn das Maskenbild 8-Bit-Graustufen (Modus = „L“) ist, wird das Basisbild ausgegeben, wenn der Wert des Maskenbilds 0 (schwarz) ist, und das eingefügte Bild wird ausgegeben, wenn 255 (weiß) ist. Bei anderen Werten werden die beiden Bilder entsprechend dem Wert gemischt.
Zeichnen Sie mit dem ImageDraw-Modul einen weißen Kreis auf schwarzem Hintergrund, um ein Maskenbild zu erzeugen.
mask_im = Image.new("L", im2.size, 0)
draw = ImageDraw.Draw(mask_im)
draw.ellipse((140, 50, 260, 170), fill=255)
mask_im.save('data/dst/mask_circle.jpg', quality=95)
Sehen Sie sich den following Artikel zum Zeichnen mit Kissen an.
Die Einfügeverarbeitung WIRD unter Verwendung dieses Bildes als Maske durchgeführt. Sie können das eingefügte Bild zu einem Kreis maskieren.
back_im = im1.copy()
back_im.paste(im2, (0, 0), mask_im)
back_im.save('data/dst/rocket_pillow_paste_mask_circle.jpg', quality=95)
Wenn das Maskenbild mit dem ImageFilter-Modul unscharf gemacht wird, können die Grenzen gemischt und eingefügt werden.
mask_im_blur = mask_im.filter(ImageFilter.GaussianBlur(10))
mask_im_blur.save('data/dst/mask_circle_blur.jpg', quality=95)
back_im = im1.copy()
back_im.paste(im2, (0, 0), mask_im_blur)
back_im.save('data/dst/rocket_pillow_paste_mask_circle_blur.jpg', quality=95)
Sie sind nicht auf von ImageDraw gezeichnete geometrische Figuren beschränkt, sie können in jeder Form eingefügt werden, solange ein Maskenbild vorbereitet WIRD.
Erhalten Sie es mit einem schwarz-weißen Bild in Form eines Pferdes (scikit-image sample: skimage.data.horse() ).
Nachdem das Bild von open() gelesen wurde, wird es von resize() an die Größe des eingefügten Bildes angepasst und der Modus von convert() auf ‚L‘ (Graustufen) konvertiert.
mask_im = Image.open('data/src/horse.png').resize(im2.size).convert('L')
back_im = im1.copy()
back_im.paste(im2, (100, 50), mask_im)
back_im.save('data/dst/rocket_pillow_paste_mask_horse.jpg', quality=95)
Obwohl es kein gutes Beispiel ist, ist es in einer komplizierten Form eingefügt. Wenn Sie Bilder wie Stern- oder Herzform vorbereiten, kann es in verschiedenen Situationen verwendet werden.
Wenn Sie das Schwarzweiß des Maskenbildes umkehren möchten, lesen Sie bitte den folgenden Artikel.