40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
import os
|
|||
|
|
import subprocess
|
|||
|
|
|
|||
|
|
def create_iconset():
|
|||
|
|
# 创建临时iconset目录
|
|||
|
|
if not os.path.exists('icons/tmp.iconset'):
|
|||
|
|
os.makedirs('icons/tmp.iconset')
|
|||
|
|
|
|||
|
|
# 定义需要的图标尺寸
|
|||
|
|
icon_sizes = [16, 32, 64, 128, 256, 512, 1024]
|
|||
|
|
|
|||
|
|
for size in icon_sizes:
|
|||
|
|
# 常规分辨率
|
|||
|
|
output_path = f'icons/tmp.iconset/icon_{size}x{size}.png'
|
|||
|
|
subprocess.run(['sips', '-s', 'format', 'png',
|
|||
|
|
'-z', str(size), str(size),
|
|||
|
|
'icons/logo.svg',
|
|||
|
|
'--out', output_path],
|
|||
|
|
check=True)
|
|||
|
|
|
|||
|
|
# 高分辨率(@2x)
|
|||
|
|
if size <= 512:
|
|||
|
|
output_path = f'icons/tmp.iconset/icon_{size}x{size}@2x.png'
|
|||
|
|
subprocess.run(['sips', '-s', 'format', 'png',
|
|||
|
|
'-z', str(size*2), str(size*2),
|
|||
|
|
'icons/logo.svg',
|
|||
|
|
'--out', output_path],
|
|||
|
|
check=True)
|
|||
|
|
|
|||
|
|
# 使用iconutil生成.icns文件
|
|||
|
|
subprocess.run(['iconutil', '-c', 'icns', 'icons/tmp.iconset',
|
|||
|
|
'-o', 'icons/logo.icns'],
|
|||
|
|
check=True)
|
|||
|
|
|
|||
|
|
# 清理临时文件
|
|||
|
|
subprocess.run(['rm', '-rf', 'icons/tmp.iconset'], check=True)
|
|||
|
|
|
|||
|
|
if __name__ == '__main__':
|
|||
|
|
create_iconset()
|