Python Pillow を使った画像の合成
Python、Pillow を使って画像を合成してみました(画像はいらすとやさんから)。
まず、Pillow をインストールします。
pip install pillow
画像の読み込みから、リサイズ、貼り付けまで、以下のサイトを参考にしました。
img

background_img

from PIL import Image, ImageDraw
def scale_to_width(img, width): # アスペクト比を固定して、幅が指定した値になるようリサイズする関数。
height = round(img.height * width / img.width) #横幅からアスペクト比をもとに高さを計算
return img.resize((width, height)) #リサイズし、return
img = Image.open("path/to/character_angel.png")
img.load()
image = Image.new("RGB", img.size, (255, 255, 255))
image.paste(img, mask=img.split()[3])
image.save("out_img.jpg","JPEG",quality=95)
out_img = Image.open("out_img.jpg")
background_img = Image.open("path/to/bg_heaven_tengoku.jpg")
img_resized = scale_to_width(out_img, 200)
mask = Image.new("L", img_resized.size, 0) #img_resizedと同サイズでLモードの画像を生成
draw = ImageDraw.Draw(mask) #maskの描画変数
draw.ellipse((0, 0, 200, 200), fill=255) #円を描画(left,upper,right,lower)で示す長方形に内接する円になる
mask.save('mask_circle.jpeg', quality=95)
background_img.paste(img_resized, (150, 20), mask) # 合成。第二引数は、貼り付ける位置。
background_img.save("final.png")
# background_img.save("final.jpeg", quality=95 )
合成された画像がこちら。