¿Qué hace Automatización de Compresión de Imágenes?
Resumen
Redimensiona y comprime imágenes de productos por lotes a archivos .jpg, .webp o .avif listos para la web en segundos usando sharp, preservando los nombres de archivo originales, aplanando PNGs transparentes sobre blanco y manteniendo estrictamente la relación de aspecto (autoescalado con altura única 800px o verificación exacta WxH).
Principio fundamental: Nunca asumas una unidad de trabajo (F:\), nunca recurras silenciosamente a 800x800 o jpg sin confirmar cuando se omitan, y nunca recortes o distorsiones una imagen.
Referencia Rápida
| Situación | Acción |
|---|---|
Primera ejecución (falta node_modules/) | Ejecuta npm install (requiere Node.js >= 20.0.0) |
.imagerc.json ausente y no se proporcionó --dir | Pregunta al usuario por su carpeta de trabajo antes de ejecutar |
| Tamaño/altura o formato objetivo omitidos | Pregunta al usuario por el tamaño (800px altura o WxH) y formato (jpg, webp o avif) antes de ejecutar |
El usuario solo da la altura (ej. 800px en webp) | Pasa --size 800px --format webp (calcula automáticamente el ancho proporcional por imagen) |
El usuario da carpeta de trabajo + WxH + formato | Ejecuta `node bin/cli.js --dir "" --size "" --format <jpg |
| El usuario tiene carpetas separadas de raw y exportación | Ejecuta `node bin/cli.js --input "" --output "" --size "<px |
Discrepancia de relación de aspecto exacta WxH | No recortes/estires; reporta tamaños coincidentes sugeridos de la salida (o sugiere modo altura 800px si corresponde) |
| Fondo PNG transparente | Aplanado automáticamente sobre #ffffff (cambia mediante --bg "#hex") |
Flujo de Trabajo Paso a Paso para el Agente
Sigue estos pasos en orden cada vez que un usuario te pida comprimir o redimensionar imágenes usando este repositorio:
1. Verifica Configuración y Dependencias
- Verifica que
node_modules/sharpexista. Si está recién clonado, ejecutanpm install. - Revisa si
.imagerc.jsonexiste en la raíz del repositorio (a menos que el usuario ya haya especificado una carpeta en su mensaje).- Si no existe
.imagerc.jsonni el usuario nombró una carpeta, pregunta primero al usuario: "¿Qué carpeta te gustaría usar para tus carpetas de imágenes deinputyoutput? (Por ejemplo,./para esta carpeta del proyecto,~/Desktop/imagenes-tiendaoD:\Imagenes)." - Nunca asumas
F:\Image Compress Automationo adivines~/Desktop.
- Si no existe
2. Inspecciona input/ y Confirma Tamaño + Formato
- Asegúrate de que existan
<carpeta>/inputy<carpeta>/output(o pasa--dir "<carpeta>"para que el CLI los cree). - Verifica cuántas imágenes compatibles (
.png,.jpg,.jpeg,.webp,.avif) hay en la carpeta de entrada. Si son0, informa al usuario la ruta exacta<carpeta>/inputdonde debe colocar sus imágenes y detente. - Si el usuario no ha declarado explícitamente la altura/dimensiones objetivo o el formato de salida en la solicitud actual, pregunta antes de ejecutar — incluso si los valores predeterminados sin TTY/sin banderas caen a
800x800yjpg.
3. Ejecuta de Forma No Interactiva y Reporta Resultados
Ejecuta el CLI explícitamente con banderas (evita node bin/cli.js simple en shells de herramientas sin TTY para no depender de valores predeterminados silenciosos):
node bin/cli.js --dir "<carpeta-de-trabajo>" --size "<ALTURApiX o ANCHOxALTURA>" --format "<jpg|webp|avif>"
Banderas opcionales cuando el usuario las solicite:
--format <jpg|webp|avif>(por defectojpg;webpes ~25–35% más pequeño,avifes ~30–50% más pequeño)--quality <1-100>(por defecto85para JPGmozjpeg/ WebPeffort: 6, y65para AVIFeffort: 4)--bg "<#hex>"(por defecto#ffffffpara aplanar PNG transparentes)--strict(devuelve código de salida1si algún archivo se salta o falla)
Si el usuario quiere recordar esta carpeta de trabajo para ejecuciones interactivas en terminal (npm start), puedes mencionar o guardar .imagerc.json (en gitignore) o hacer que ejecuten npm run setup.
4. Verifica y Resume la Salida
Reporta directamente desde la salida del comando:
- Totales de convertidos / saltados / fallidos y espacio ahorrado (
MBy%). - Ruta exacta de la carpeta de salida (
<carpeta-de-trabajo>/output). - Para cualquier salto por
aspect-ratio-mismatch, muestra las dimensiones/relación originales del archivo y las dimensiones proporcionales sugeridas impresas por el CLI.
Errores Comunes y Señales de Alerta
| Pensamiento / Error | Por Qué Falla y Qué Hacer en su Lugar |
|---|---|
"Solo ejecutaré node bin/cli.js sin --size o --format" | El valor predeterminado sin TTY elige silenciosamente 800x800 y jpg. Siempre confirma carpeta, tamaño/altura (800px o WxH) y formato (jpg/webp/avif) con el usuario primero y pasa --dir, --size y --format. |
"El usuario quiere 800×800 en una foto 1:2 — pasaré fit: cover o escribiré un script de recorte personalizado" | Viola la regla principal: nunca recortes o estires silenciosamente. Deja que el CLI rechace discrepancias y dé dimensiones proporcionales. |
"Haré commit de .imagerc.json o de PNGs de prueba en input/" | .imagerc.json, input/* y output/* (excepto .gitkeep) están en gitignore para proteger la privacidad del usuario. Mantenlos sin seguimiento. |
"Pasaré --input sin --output" | Sin --output o --dir, la salida cae a <cwd>/output. Siempre pasa --dir (flujo estándar) o ambos --input y --output. |