Initial commit
This commit is contained in:
61
scratch/update_favicon_v4.py
Normal file
61
scratch/update_favicon_v4.py
Normal file
@@ -0,0 +1,61 @@
|
||||
from PIL import Image, ImageDraw
|
||||
|
||||
def update_favicon_v4():
|
||||
logo_path = "/Users/apple/.gemini/antigravity-ide/brain/822556bd-47a7-4c07-8975-803618af0a3a/media__1781946188768.png"
|
||||
|
||||
# 1. Load original logo
|
||||
logo_img = Image.open(logo_path).convert("RGBA")
|
||||
|
||||
# 2. Crop the circle icon: X: 85 to 149 (width=65), Y: 44 to 83 (height=40)
|
||||
icon_w = 65
|
||||
icon_h = 40
|
||||
icon_crop = logo_img.crop((85, 44, 150, 84))
|
||||
|
||||
# 3. Strip any white background from the cropped icon
|
||||
icon_tp = Image.new("RGBA", (icon_w, icon_h))
|
||||
pixels_ic = icon_crop.load()
|
||||
pixels_tp = icon_tp.load()
|
||||
for x in range(icon_w):
|
||||
for y in range(icon_h):
|
||||
r, g, b, a = pixels_ic[x, y]
|
||||
if r >= 248 and g >= 248 and b >= 248:
|
||||
pixels_tp[x, y] = (0, 0, 0, 0)
|
||||
else:
|
||||
pixels_tp[x, y] = (r, g, b, a)
|
||||
|
||||
# 4. Place it inside a square 65x65 box to prevent squishing
|
||||
square_size = 65
|
||||
square_icon = Image.new("RGBA", (square_size, square_size), (0, 0, 0, 0))
|
||||
y_offset = (square_size - icon_h) // 2
|
||||
square_icon.paste(icon_tp, (0, y_offset), icon_tp)
|
||||
|
||||
# 5. Draw a solid white circle background behind the square icon
|
||||
favicon_img = Image.new("RGBA", (square_size, square_size), (0, 0, 0, 0))
|
||||
draw = ImageDraw.Draw(favicon_img)
|
||||
|
||||
# Draw solid white circle (leave a small transparent margin around it for clean rendering)
|
||||
margin = 2
|
||||
draw.ellipse(
|
||||
[margin, margin, square_size - margin, square_size - margin],
|
||||
fill=(255, 255, 255, 255)
|
||||
)
|
||||
|
||||
# Paste the purple logo on top of the white circle
|
||||
favicon_img.paste(square_icon, (0, 0), square_icon)
|
||||
|
||||
# 6. Resize to standard sizes and save
|
||||
favicon_32 = favicon_img.resize((32, 32), Image.Resampling.LANCZOS)
|
||||
favicon_48 = favicon_img.resize((48, 48), Image.Resampling.LANCZOS)
|
||||
|
||||
# Save favicon.ico to public/ and src/app/
|
||||
favicon_32.save("public/favicon.ico", format="ICO", sizes=[(32, 32), (48, 48)])
|
||||
favicon_32.save("src/app/favicon.ico", format="ICO", sizes=[(32, 32), (48, 48)])
|
||||
|
||||
# Save PNG versions
|
||||
favicon_48.save("public/favicon.png", "PNG")
|
||||
favicon_48.save("public/apple-icon.png", "PNG")
|
||||
|
||||
print("Successfully generated non-squished favicon with solid white circle background!")
|
||||
|
||||
if __name__ == "__main__":
|
||||
update_favicon_v4()
|
||||
Reference in New Issue
Block a user