52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
import os
|
|
import sys
|
|
from PIL import Image
|
|
|
|
def optimize_image(img_path, size=160, backup=False):
|
|
if not os.path.exists(img_path):
|
|
print(f"Error: {img_path} not found.")
|
|
return
|
|
|
|
src_path = img_path
|
|
if backup:
|
|
backup_path = img_path + ".orig"
|
|
if not os.path.exists(backup_path):
|
|
os.rename(img_path, backup_path)
|
|
print(f"Backed up original to {backup_path}")
|
|
src_path = backup_path
|
|
else:
|
|
src_path = backup_path
|
|
|
|
try:
|
|
img = Image.open(src_path)
|
|
width, height = img.size
|
|
print(f"Optimizing {img_path}: Original size {width}x{height}")
|
|
|
|
# Crop to square
|
|
crop_size = min(width, height)
|
|
left = (width - crop_size) // 2
|
|
|
|
if height > width:
|
|
top = int((height - crop_size) * 0.15)
|
|
else:
|
|
top = (height - crop_size) // 2
|
|
|
|
right = left + crop_size
|
|
bottom = top + crop_size
|
|
|
|
cropped = img.crop((left, top, right, bottom))
|
|
resized = cropped.resize((size, size), Image.Resampling.LANCZOS)
|
|
|
|
# Save as PNG
|
|
resized.save(img_path, 'PNG', optimize=True)
|
|
print(f"Saved optimized {size}x{size} image to {img_path}")
|
|
except Exception as e:
|
|
print(f"Error processing image: {e}")
|
|
|
|
if __name__ == '__main__':
|
|
if len(sys.argv) > 1:
|
|
optimize_image(sys.argv[1], backup=False)
|
|
else:
|
|
optimize_image('/root/Apps/Camila/public/assets/camila_prof.png', backup=True)
|
|
optimize_image('/root/Apps/Camila/public/assets/kemily.png', backup=True)
|