PythonはRGBとRGBA画像を処理し、透明な画像部分の貼り付けがあり、paste->maskパラメータ

1333 ワード

from PIL import Image
import numpy as np

def trans(img):
# *********** Begin **********#
#              
#   : r、g、b、     230              ,         ,          。              。
    img = img.convert('RGBA')

    x, y = img.size

    for i in range(x):
        for j in range(y):
            color = img.getpixel((i, j))
            Mean = np.mean(list(color[:-1]))
            if Mean > 230:
                color = color[:-1] + (0, )
            else:
                color = (0, 0, 0, 255)
            img.putpixel((i, j), color)

    return img
# *********** End **********#

def img_replace(path):
    # *********** Begin **********#
    img = Image.open(path)
    #           img                   。

    # 0, 0, 823, 633
    # 1134, 0, 1555, 331
    # 1543, 211, 1650, 428

    #      img.crop
    background = img.crop((0, 0, 823, 633))
    img1 = img.crop((1134, 0, 1555, 331))
    img2 = img.crop((1543, 211, 1650, 428))

    img1 = trans(img1)
    img2 = trans(img2)
    #                      
    # 400,0
    # 4,95
    background.paste(img1, (400, 0), mask=img1.split()[3])
    background.paste(img2, (4, 95), mask=img2.split()[3])
    #        './Image_body_cold/  /d.jpg'
    background.save("./images/d.jpg")
    # *********** End **********#
    return True