codigo0/scripts/optimize-bloque-00-images.sh

68 lines
2.3 KiB
Bash
Raw Normal View History

2026-01-19 08:10:16 +00:00
#!/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"