This commit is contained in:
Gilles Soulier
2026-01-05 16:08:01 +01:00
parent dcba044cd6
commit c67befc549
2215 changed files with 26743 additions and 329 deletions
+87
View File
@@ -0,0 +1,87 @@
#!/usr/bin/env python3
"""
Script pour régénérer toutes les miniatures avec le nouveau ratio (48px)
"""
import os
import sys
from pathlib import Path
# Add app to path
sys.path.insert(0, str(Path(__file__).parent))
from app.db.session import get_peripherals_db
from app.models.peripheral import PeripheralPhoto
from app.utils.image_processor import ImageProcessor
def regenerate_thumbnails():
"""Régénérer toutes les miniatures"""
db = next(get_peripherals_db())
try:
# Get all photos
photos = db.query(PeripheralPhoto).all()
total = len(photos)
success = 0
errors = 0
print(f"📊 Trouvé {total} photos")
print("=" * 60)
for i, photo in enumerate(photos, 1):
print(f"\n[{i}/{total}] Photo ID {photo.id} - {photo.filename}")
# Check if main image exists
if not os.path.exists(photo.stored_path):
print(f" ⚠️ Image principale introuvable : {photo.stored_path}")
errors += 1
continue
# Get upload directory
upload_dir = os.path.dirname(photo.stored_path)
try:
# Delete old thumbnail
if photo.thumbnail_path and os.path.exists(photo.thumbnail_path):
old_size = os.path.getsize(photo.thumbnail_path)
os.remove(photo.thumbnail_path)
print(f" 🗑️ Ancienne miniature supprimée ({old_size} octets)")
# Generate new thumbnail with aspect ratio preserved
thumbnail_path, thumbnail_size = ImageProcessor.create_thumbnail_with_level(
image_path=photo.stored_path,
output_dir=upload_dir,
compression_level="medium"
)
# Update database
photo.thumbnail_path = thumbnail_path
db.commit()
print(f" ✅ Nouvelle miniature : {os.path.basename(thumbnail_path)} ({thumbnail_size} octets)")
# Show dimensions
from PIL import Image
with Image.open(thumbnail_path) as img:
print(f" 📐 Dimensions : {img.width}×{img.height}px")
success += 1
except Exception as e:
print(f" ❌ Erreur : {e}")
db.rollback()
errors += 1
print("\n" + "=" * 60)
print(f"✅ Succès : {success}/{total}")
print(f"❌ Erreurs : {errors}/{total}")
finally:
db.close()
if __name__ == "__main__":
print("🖼️ Régénération des miniatures avec ratio d'aspect conservé (48px)")
print("=" * 60)
regenerate_thumbnails()