#!/bin/bash # Script para optimizar imágenes grandes del bloque 00 # Genera versiones WebP y PNG optimizadas set -e SRC_DIR="assets/images/bloque_00" DEST_DIR="public/assets/infografias/bloque-0-fundamentos" echo "🖼️ Optimizando imágenes del bloque 00..." if [ ! -d "$SRC_DIR" ]; then echo "❌ Error: No se encuentra el directorio $SRC_DIR" exit 1 fi mkdir -p "$DEST_DIR" # Función para limpiar nombre de archivo clean_name() { echo "$1" | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | tr -d ':' | sed 's/[áéíóúÁÉÍÓÚ]/aeiou/g' | sed 's/[^a-z0-9-]//g' } # Procesar cada PNG for img in "$SRC_DIR"/*.png; do if [ -f "$img" ]; then filename=$(basename "$img" .png) clean_name=$(clean_name "$filename") echo " 📸 Procesando: $filename -> $clean_name" # Redimensionar si es muy grande (max 1920px de ancho) y convertir a WebP (85% calidad) convert "$img" -resize 1920x1920> -quality 85 "$DEST_DIR/$clean_name.webp" 2>/dev/null || { echo " ⚠️ Error creando WebP, intentando PNG optimizado..." } # Crear versión PNG optimizada como fallback convert "$img" -resize 1920x1920> -quality 85 -strip "$DEST_DIR/$clean_name.png" 2>/dev/null || { echo " ⚠️ Error optimizando PNG" } # Intentar con pngquant si está disponible (mejor compresión) if command -v pngquant &> /dev/null; then if [ -f "$DEST_DIR/$clean_name.png" ]; then pngquant --quality=65-80 --ext .png --force "$DEST_DIR/$clean_name.png" 2>/dev/null || true fi fi # Mostrar reducción de tamaño original_size=$(stat -f%z "$img" 2>/dev/null || stat -c%s "$img" 2>/dev/null) if [ -f "$DEST_DIR/$clean_name.webp" ]; then new_size=$(stat -f%z "$DEST_DIR/$clean_name.webp" 2>/dev/null || stat -c%s "$DEST_DIR/$clean_name.webp" 2>/dev/null) reduction=$((100 - (new_size * 100 / original_size))) echo " ✅ WebP creado: $(numfmt --to=iec-i --suffix=B $new_size 2>/dev/null || echo "${new_size}B") (reducción: ~${reduction}%)" fi fi done echo "" echo "✅ Optimización completada" echo "📊 Imágenes optimizadas en: $DEST_DIR" echo "" echo "⚠️ NOTA: Las imágenes originales se mantienen en $SRC_DIR" echo " Después de verificar que todo funciona, puedes eliminarlas con:" echo " rm -rf $SRC_DIR"