[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)

# アルファチャンネル

[Xcode] アイコン登録 iOSとmacOSの違い 黒枠付きになる

[M1 Mac, Ventura 13.3.1, Xcode 14.3]

iOSアプリのアイコンとしてmacOSアプリで使ったアイコンと同サイズのものを登録すると下図のように黒枠で囲まれてやや小さいアイコンになりました。

黒枠付きアイコン(左側)

調べると、iOSの方は正方形の画像を登録しXcodeが角丸のアイコンにトリミングしてくれる仕組みであることが分かりました。

引用元:Apple Developer Documentation

iOSアプリ開発者の手間を軽減するようAppleが配慮しているということでしょうか。売上の半分以上を占めるiPhoneならさもありなんといったところです。

かといってmacOSアプリ開発者の方からiOSに合わせろという声は上がらないでしょう。アイコンも製作物の一部ですし角丸にするくらい自分でできる、と思っているのでは。

黒枠がとれたアイコン