"""Package the generated transparent artwork into Windows icon asset sizes.
Only resampling, centering and format conversion are performed here.
Usage: python tools/package_icon.py
"""
from pathlib import Path
from PIL import Image
root = Path(__file__).resolve().parent.parent
source = Image.open(root / "docs/design/app-icon.png").convert("RGBA")
assets = root / "XFEWorkflow/XFEWorkflow/Assets"
source.resize((256, 256), Image.Resampling.LANCZOS).save(assets / "icon.png")
source.save(assets / "appicon.ico", sizes=[(s, s) for s in (16, 20, 24, 32, 40, 48, 64, 128, 256)])
for name, width, height, size in [
("Square150x150Logo.scale-200.png", 300, 300, 300),
("Square44x44Logo.scale-200.png", 88, 88, 88),
("Square44x44Logo.targetsize-24_altform-unplated.png", 24, 24, 24),
("StoreLogo.png", 50, 50, 50),
("LockScreenLogo.scale-200.png", 48, 48, 48),
("Wide310x150Logo.scale-200.png", 620, 300, 260),
("SplashScreen.scale-200.png", 1240, 600, 320),
]:
canvas = Image.new("RGBA", (width, height), (0, 0, 0, 0))
icon = source.resize((size, size), Image.Resampling.LANCZOS)
canvas.alpha_composite(icon, ((width - size) // 2, (height - size) // 2))
canvas.save(assets / name)
print("Packaged transparent PNG assets and multi-resolution ICO.")
"""Package the generated transparent artwork into Windows icon asset sizes.
Only resampling, centering and format conversion are performed here.
Usage: python tools/package_icon.py
"""
from pathlib import Path
from PIL import Image
root = Path(__file__).resolve().parent.parent
source = Image.open(root / "docs/design/app-icon.png").convert("RGBA")
assets = root / "XFEWorkflow/XFEWorkflow/Assets"
source.resize((256, 256), Image.Resampling.LANCZOS).save(assets / "icon.png")
source.save(assets / "appicon.ico", sizes=[(s, s) for s in (16, 20, 24, 32, 40, 48, 64, 128, 256)])
for name, width, height, size in [
("Square150x150Logo.scale-200.png", 300, 300, 300),
("Square44x44Logo.scale-200.png", 88, 88, 88),
("Square44x44Logo.targetsize-24_altform-unplated.png", 24, 24, 24),
("StoreLogo.png", 50, 50, 50),
("LockScreenLogo.scale-200.png", 48, 48, 48),
("Wide310x150Logo.scale-200.png", 620, 300, 260),
("SplashScreen.scale-200.png", 1240, 600, 320),
]:
canvas = Image.new("RGBA", (width, height), (0, 0, 0, 0))
icon = source.resize((size, size), Image.Resampling.LANCZOS)
canvas.alpha_composite(icon, ((width - size) // 2, (height - size) // 2))
canvas.save(assets / name)
print("Packaged transparent PNG assets and multi-resolution ICO.")