[Python]323 icnsファイルの作成

[M1 Mac, Big Sur 11.6.5]

MacOSアプリ用アイコンを作成する機会が増えたのでicnsファイル作成コードを書きました。あらかじめ2つのpngファイルを用意すればあとは自動的にicnsファイルを作成してくれます。

最初のpngファイル2つはプレビューアプリのサイズ調整機能で簡単に作れます。大元のファイルは2048*2048, dpi=72です。

from PIL import Image
import subprocess

filepath = 'test.png' # 1024*1024 dpi=144
filepath2 = 'test2.png' # 512*512 dpi=72
filedir = '/test/test.iconset/'
pixels = [32, 64, 256, 512, 1024]
pixels2 = [16, 32, 64, 256, 512]
filenames = ['icon_16x16@2x.png','icon_32x32@2x.png','icon_128x128@2x.png','icon_256x256@2x.png','icon_512x512@2x.png']
filenames2 = ['icon_16x16.png','icon_32x32.png','icon_128x128.png','icon_256x256.png','icon_512x512.png']

# dpi=144の各種pngファイル作成
for pixel,file in zip(pixels,filenames):
    img = Image.open(filepath)
    img_resize = img.resize((pixel,pixel))
    img_resize.save(filedir + file)
    img.close()

# dpi=72の各種pngファイル作成    
for pixel,file in zip(pixels2,filenames2):
    img = Image.open(filepath2)
    img_resize = img.resize((pixel,pixel))
    img_resize.save(filedir + file)
    img.close()

# icnsファイル作成
cmd = 'iconutil -c icns test.iconset'
subprocess.run(cmd, cwd=r"/test",shell=True)