[Python]333 pngファイルを単色で塗りつぶす / Pillow

[M1 Mac, Big Sur 11.6.7, Python 3.10.4]

単色アイコンの色を変えるために関数を作成しました。

これで単色であれば一々Adobe XDを立ち上げアイコンを作らなくて済みます。

for文の内容を変えれば特定の色だけ変更することも可能です。

Pythonならスケッチ感覚でコーディングできるので本当に楽ですね。

from PIL import Image
import numpy as np

def color_convert(path,red,green,blue,name="color"):
    # pngファイルの色情報を読み込む [red, green, blue, alpha]
    img_array = np.array(Image.open(path))

    # 全画素のRGB値を変更
    for row in img_array:
        for pixel in row:
            np.put(pixel,0,red)
            np.put(pixel,1,green)
            np.put(pixel,2,blue)
                
    img = Image.fromarray(img_array)

    new_filename0 = path.split("/")[:-1]
    new_filename = '/'.join(new_filename0) + "/" + name + ".png"
    img.save(new_filename)
        
    return 0

if __name__ == '__main__':
    path = "umemurasaki.png"
    color_convert(path,173,255,47,"greenyellow")