[Python] 358 pngファイルからαチャンネルを削除

[M1 Mac, Ventura 13.3.1, Python 3.10.4]

前の記事でiOSアプリはアイコン登録で優遇されているのではないかと述べましたが、案外そうでもなさそうです。

というのは、iOSアイコンとして登録する画像はpngはpngでもαチャンネル(透過度)を削除したpngでないとアプリ申請が通らないからです。

αチャンネルがないpngというのが存在するというのも驚きですし、それを必須にするAppleもたいがいだと感じました。

αチャンネルはPythonで簡単に削除できます。

from PIL import Image

def remove_alpha_channel(input_file, output_file):
    image = Image.open(input_file)
    image = image.convert("RGB")
    image.save(output_file)

input_file = "RGBA.png"
output_file = "RGB.png"
remove_alpha_channel(input_file, output_file)

削除できたかどうかは右メニュー”情報を見る”、あるいはピクセル情報をCSVファイルに出力すれば分かります。RGBAデータを取り出そうとするとエラーになるはずです。

“情報を見る”画面
from PIL import Image
import numpy as np
import csv

img_array = np.array(Image.open("RGB.png"))

# 全ピクセルの色情報を取得 jpgあるいはpng(RGB)の場合
list_rgb = img_array[:, :, (0, 1, 2)]
# png(RGBA)の場合
# list_rgba = img_array[:, :, (0, 1, 2, 3)]

with open("RGB.csv", 'w') as f:
    writer = csv.writer(f,lineterminator='\n')
    writer.writerows(list_rgb)

# アルファチャンネル