# Source - https://stackoverflow.com/a/36168447 # Posted by Ronan Paixão # Retrieved 2026-08-31, License - CC BY-SA 3.0 from PIL import Image ICONS_DIR = 'graphism/icons' icon_32 = Image.open(f'{ICONS_DIR}/32x32.png') icon_128 = Image.open(f'{ICONS_DIR}/128x128.png') icon_256 = Image.open(f'{ICONS_DIR}/128x128@2x.png') # Use each source PNG at its native resolution instead of resampling # a single base image, so small sizes stay sharp. icon_256.save( f'{ICONS_DIR}/icon.ico', sizes=[(32, 32), (128, 128), (256, 256)], append_images=[icon_32, icon_128], ) # Source - https://pypi.org/project/icnsutil/ import icnsutil icns = icnsutil.IcnsFile() icns.add_media(file=f'{ICONS_DIR}/32x32.png') icns.add_media(file=f'{ICONS_DIR}/128x128.png') icns.add_media(file=f'{ICONS_DIR}/128x128@2x.png') icns.write(f'{ICONS_DIR}/icon.icns') print(f'Generated {ICONS_DIR}/icon.ico and {ICONS_DIR}/icon.icns')