mirror of
https://github.com/nimbold/Firelink.git
synced 2026-08-11 03:59:09 +00:00
chore(assets): update app icons and icon generation scripts
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
import sys
|
||||
from PIL import Image, ImageDraw
|
||||
|
||||
def generate_gradient_preview(src_path, dest_path):
|
||||
img = Image.open(src_path).convert("RGBA")
|
||||
width, height = img.size
|
||||
pixels = img.load()
|
||||
|
||||
# Background color from an inner point
|
||||
bg_color = pixels[100, 100]
|
||||
|
||||
# Define gradient colors
|
||||
# Top color: slightly lighter/richer blue (e.g. #1E2541)
|
||||
# Bottom color: darker navy (e.g. #0A0D1A)
|
||||
top_color = (30, 37, 65, 255)
|
||||
bottom_color = (10, 13, 26, 255)
|
||||
|
||||
# Create new image
|
||||
new_img = Image.new("RGBA", (width, height))
|
||||
new_pixels = new_img.load()
|
||||
|
||||
for y in range(height):
|
||||
# Interpolate background color for this row
|
||||
ratio = y / float(height - 1)
|
||||
grad_r = int(top_color[0] * (1 - ratio) + bottom_color[0] * ratio)
|
||||
grad_g = int(top_color[1] * (1 - ratio) + bottom_color[1] * ratio)
|
||||
grad_b = int(top_color[2] * (1 - ratio) + bottom_color[2] * ratio)
|
||||
grad_color = (grad_r, grad_g, grad_b, 255)
|
||||
|
||||
for x in range(width):
|
||||
p = pixels[x, y]
|
||||
|
||||
# distance from original background color
|
||||
dist = max(abs(p[0]-bg_color[0]), abs(p[1]-bg_color[1]), abs(p[2]-bg_color[2]))
|
||||
|
||||
if dist < 15:
|
||||
# purely background
|
||||
new_pixels[x, y] = grad_color
|
||||
elif dist < 60:
|
||||
# anti-aliased edge, blend
|
||||
alpha = (dist - 15) / 45.0
|
||||
r = int(p[0] * alpha + grad_color[0] * (1 - alpha))
|
||||
g = int(p[1] * alpha + grad_color[1] * (1 - alpha))
|
||||
b = int(p[2] * alpha + grad_color[2] * (1 - alpha))
|
||||
new_pixels[x, y] = (r, g, b, 255)
|
||||
else:
|
||||
# purely logo
|
||||
new_pixels[x, y] = p
|
||||
|
||||
# Apply rounded rectangle mask
|
||||
radius = int(width * 0.225)
|
||||
mask = Image.new("L", (width, height), 0)
|
||||
draw = ImageDraw.Draw(mask)
|
||||
draw.rounded_rectangle((0, 0, width, height), radius=radius, fill=255)
|
||||
new_img.putalpha(mask)
|
||||
|
||||
# Resize to something reasonable for preview
|
||||
preview = new_img.resize((512, 512), Image.Resampling.LANCZOS)
|
||||
preview.save(dest_path)
|
||||
print("Preview saved to", dest_path)
|
||||
|
||||
if __name__ == '__main__':
|
||||
generate_gradient_preview(sys.argv[1], sys.argv[2])
|
||||
Reference in New Issue
Block a user