ImgShrink es un optimizador de imágenes local, portable y con interfaz de terminal. Reduce el peso de fotografías, capturas y gráficos en JPEG, PNG y WebP sin subir nada a Internet y sin instalar Python, Node.js, FFmpeg, ImageMagick ni ningún runtime adicional. Se descarga un ejecutable, se abre desde la terminal y se trabaja con él.
Está pensado para tandas: una carpeta de fotos, los recursos de una web o un archivo que se ha vuelto incómodo de mover. La aplicación enseña qué va a hacer antes de tocar nada, permite elegir el destino y termina con un resumen verificable. Los originales no se modifican salvo que se pida expresamente.
Qué es y para qué sirve
ImgShrink no es un editor de fotos. No recorta, no corrige el color y no aplica filtros creativos. Hace una cosa: decodificar, recomprimir y volver a escribir cada imagen con una configuración controlada, conservando el formato o convirtiendo a WebP según el perfil elegido.
Eso lo hace útil cuando:
- Publicas una web y quieres servir imágenes más ligeras sin depender de un servicio externo.
- Liberas espacio en el móvil, el portátil o un disco externo sin borrar recuerdos.
- Compartes un lote por correo o mensajería y necesitas bajar el peso sin perder la imagen.
- Entregas material a un cliente y quieres un informe de qué se ha procesado, qué se ha omitido y cuánto se ha ahorrado.
Trabaja con archivos sueltos, una carpeta, una carpeta con subcarpetas o una carpeta sin ellas. El resultado puede ir a una carpeta separada, junto al original con un sufijo o, con doble confirmación, encima del original.
Qué problema resuelve
- Privacidad por defecto. No abre conexiones de red, no envía imágenes, rutas ni estadísticas, no incluye telemetría y no pide cuentas. Los informes y registros son archivos locales.
- Cero instalación de dependencias. El binario incluye el motor de imagen y libwebp. No hay que preparar un entorno, ni compilar, ni instalar códecs.
- Control antes de escribir. El análisis previo muestra cuántas imágenes hay, su tamaño, los conflictos, los avisos y el destino. Nada se escribe hasta confirmar.
- Escritura segura. El resultado se escribe en un archivo temporal de la misma carpeta y se valida antes de moverlo a su destino. En el modo de sobrescritura, el original solo se reemplaza después de comprobar que el temporal es legible y que el original no ha cambiado.
La diferencia no es solo el ahorro. Es saber qué se va a escribir, dónde y con qué consecuencias antes de que ocurra.
Descarga e instalación
Los cuatro artefactos se publican en GitHub Releases. La ficha de descargas de esta página enlaza a la versión 0.1.0 y cada archivo incluye su checksum SHA-256. Elige el de tu sistema, descomprímelo y ejecuta imgshrink desde una terminal.
ImgShrink es una aplicación de terminal: ábrela desde Windows Terminal, PowerShell, Terminal.app o una terminal Linux. No está pensada para ejecutarse con doble clic y que la ventana se cierre al terminar.
Windows 11
Expand-Archive .\imgshrink-x86_64-pc-windows-msvc.zip -DestinationPath .\imgshrink
cd .\imgshrink
.\imgshrink.exe
- El ZIP incluye el ejecutable, el README, la licencia y los avisos de terceros.
- Windows 10 x64 funciona con el mismo ZIP, pero es mejor esfuerzo: el sistema está fuera de soporte.
- Si SmartScreen muestra un aviso, usa Más información → Ejecutar de todas formas. El binario todavía no está firmado.
- Para comprobar el motor sin abrir la interfaz:
.\imgshrink.exe --selftest.
macOS 13+
tar -xzf imgshrink-aarch64-apple-darwin.tar.gz # o x86_64 en un Mac Intel
cd imgshrink-aarch64-apple-darwin
chmod +x imgshrink
./imgshrink
- Gatekeeper puede bloquear un binario sin firma. Abre con clic derecho → Abrir, o revisa Ajustes del Sistema → Privacidad y seguridad.
- Si el archivo se descargó con cuarentena:
xattr -d com.apple.quarantine imgshrink. - La firma y notarización están pendientes.
Linux x86_64
tar -xzf imgshrink-x86_64-unknown-linux-musl.tar.gz
cd imgshrink-x86_64-unknown-linux-musl
chmod +x imgshrink
./imgshrink
- El artefacto es musl estático: no depende de la versión de glibc de la distribución.
- Necesita una terminal interactiva con soporte de color. Si el color o el ratón estorban:
--no-color,--asciio--no-mouse. - En servidores sin terminal interactiva puedes usar
--selftesty--diagnose.
Comprobar la descarga
Cada release publica un archivo .sha256. En Windows:
Get-FileHash .\imgshrink-x86_64-pc-windows-msvc.zip -Algorithm SHA256
En macOS y Linux:
sha256sum -c imgshrink-x86_64-unknown-linux-musl.tar.gz.sha256
- En macOS, si no tienes
sha256sum, usashasum -a 256 -c <archivo>.sha256.
Estado de los artefactos: Windows 11 x64 está verificado localmente. La CI compila los cuatro artefactos y ejecuta el selftest en Windows, macOS Apple Silicon y Linux. Los artefactos de macOS y Linux no se consideran verificados manualmente hasta que se prueben en máquinas limpias.
Cómo se usa
La aplicación guía por siete pasos:
- Finalidad. Compartir, Ahorrar espacio, Web o Personalizado. Cada opción precarga un perfil.
- Selección. Navega, marca archivos y añade carpetas; decide si incluir subcarpetas.
- Análisis. Revisa cuántas imágenes hay, su tamaño, conflictos y avisos.
- Destino. Carpeta separada, sobrescritura o sufijo.
- Revisión. Comprueba la configuración y ajusta opciones con
o. - Proceso. Progreso global, imagen actual, etapas y errores.
- Resumen. Ahorro real, tiempos, informe y carpeta de salida.
Espacio y añade carpetas con a. A la derecha se ve la selección, si se recorrerán subcarpetas y el atajo para continuar al análisis.Atajos de teclado
| Tecla | Acción |
|---|---|
| ↑ ↓ o j k | Mover |
| Enter | Abrir, elegir o confirmar |
| Espacio | Marcar o desmarcar archivo |
| Esc | Volver |
| ? | Ayuda contextual |
| q | Salir |
| Ctrl + C | Cancelar o salir de forma controlada |
| e o / | Escribir una ruta |
| a | Añadir la carpeta actual |
| r | Incluir o excluir subcarpetas |
| x | Vaciar la selección |
| h | Mostrar archivos ocultos |
| p | Continuar al análisis |
| c | Cambiar conflictos (destino) o cancelar (proceso) |
| o | Opciones de optimización (revisión) u abrir carpeta (resumen) |
| n | Nueva operación (resumen) |
Ejemplo reproducible
mkdir -p ~/Pictures/prueba
cp ~/Pictures/foto.jpg ~/Pictures/prueba/
cd ~/Pictures/prueba
imgshrink
Elige una finalidad, marca foto.jpg, pulsa p, revisa el destino y procesa. La salida aparecerá en imgshrink-output/ y los originales no se modificarán.
Análisis previo
Antes de procesar, ImgShrink resume lo que ha encontrado: número de imágenes, tamaño total, formato de salida, destino, política de metadatos y calidad. También lista los avisos que afectan a la tanda.
Los avisos habituales son:
- Transparencia en JPEG: se aplana sobre fondo RGB al guardar.
- Perfil ICC en WebP: la versión 0.1.0 no lo incrusta y lo advierte.
- 16 bits por canal: se convierte a 8 bits.
- Archivos muy pequeños: probablemente no mejoren y se omitirán si crecen.
- Archivos ilegibles o animados: se omiten y se reportan.
Perfiles de optimización
Los perfiles son puntos de partida documentados, no promesas de ahorro. Se pueden ajustar desde la revisión con o.
| Perfil | Formato de salida | Calidad | Pérdida | Redimensionado | Metadatos |
|---|---|---|---|---|---|
| Compartir | Mantener el original | 82 | Sí en JPEG/WebP; PNG sin pérdida | No | Elimina EXIF/GPS/XMP; conserva ICC si el formato lo admite |
| Ahorrar espacio | Mantener el original | 90 en JPEG | PNG/WebP sin pérdida; JPEG con pérdida | No | Elimina EXIF/GPS/XMP; conserva ICC |
| Web | WebP | 80 | Sí | No en v1 | Elimina EXIF/GPS/XMP; ICC no se incrusta en WebP |
| Personalizado | Elegible | 85 inicial | Elegible | Opcional, solo reduce | Elegible |
Notas importantes:
- JPEG no admite compresión sin pérdida. El perfil Ahorrar espacio usa calidad 90 y avisa de que sigue habiendo pérdida.
- PNG se optimiza sin pérdida con oxipng. La calidad no aplica.
- WebP puede ser sin pérdida o con pérdida; el perfil Web usa pérdida para fotografías.
- No se amplía ninguna imagen. El redimensionado solo reduce el lado mayor.
- No se cambia el formato en el modo de sobrescritura; si lo intentas, la imagen se omite.
- La política por defecto no escribe un resultado que sea mayor que el original. Se puede desactivar en Opciones.
Proceso y resultado
Durante el proceso
El progreso es global y por etapas. ImgShrink no inventa porcentajes internos del códec: muestra cuántas imágenes lleva, cuál está procesando, en qué etapa está y qué incidencias han aparecido. La cancelación es controlada.
Al terminar
El resumen compara el tamaño original con el resultante y separa las imágenes correctas, omitidas, fallidas y canceladas. También indica la carpeta de salida y el informe JSON.
El informe JSON y el registro se guardan en el directorio de estado del sistema:
- Windows:
%LOCALAPPDATA%\ImgShrink - macOS:
~/Library/Logs/ImgShrink - Linux:
$XDG_STATE_HOME/imgshrinko~/.local/state/imgshrink
Formatos y metadatos
| Entrada | Salida | Notas |
|---|---|---|
| JPEG 8 bits | JPEG | Se aplana la transparencia si la hubiera; CMYK puede fallar y se reporta |
| PNG 8/16 bits | PNG | 16 bits se convierte a 8; APNG se omite |
| WebP estático | WebP | Los animados se omiten |
| AVIF | — | No incluido en 0.1.0 |
- La orientación EXIF de JPEG se aplica a los píxeles y se normaliza para evitar dobles rotaciones.
- El perfil ICC se conserva en JPEG (APP2) y PNG (iCCP) cuando la política es «Conservar color (ICC)».
- En WebP, la versión 0.1.0 no incrusta ICC; la interfaz avisa cuando la imagen de origen lo tiene.
- Los metadatos EXIF, GPS y XMP se eliminan en todos los perfiles de esta versión.
- Las imágenes con 16 bits por canal se convierten a 8 bits y se avisa.
Modos de salida y seguridad
Carpeta separada (predeterminada)
Se conserva la estructura relativa de las carpetas. Si eliges una carpeta de entrada Fotos, la salida propuesta es Fotos-imgshrink en el mismo nivel. Nunca se mezclan resultados con originales por defecto.
Junto al original con sufijo
vacaciones.jpg → vacaciones-imgshrink.webp (el sufijo y el formato son configurables). Si el destino existe, se aplica la política elegida: omitir, sobrescribir o renombrar con -1, -2…
Sobrescribir originales
Desactivado por defecto. Requiere dos confirmaciones: primero se muestra el número de archivos y el tamaño afectado; después hay que escribir exactamente SOBRESCRIBIR y pulsar Enter.
Antes de sustituir un original, ImgShrink:
- Escribe el resultado en un archivo temporal de la misma carpeta.
- Fuerza la escritura a disco.
- Vuelve a decodificar el temporal para comprobar que es legible.
- Comprueba que el original no cambió desde el análisis.
- Solo entonces lo reemplaza.
En POSIX, el reemplazo en el mismo sistema de archivos es atómico. En Windows se usa la primitiva de reemplazo del sistema, pero antivirus, filtros y unidades de red pueden impedir la garantía. Si el proceso muere, el journal permite detectar la operación inacabada; no se borran datos automáticamente.
Límites conocidos
- No procesa vídeo, GIF animado ni APNG.
- No incluye AVIF en 0.1.0.
- No edita fotografías ni aplica filtros creativos.
- No garantiza que todas las imágenes reduzcan tamaño. Si el resultado no es menor, la política por defecto conserva el original y lo marca como omitido.
- No fuerza el tamaño de la ventana de la terminal. Si es pequeña se muestra un modo compacto o un aviso; el mínimo es 50×14.
- No comprueba el espacio libre antes de empezar. Un fallo de escritura se reporta sin tocar el original.
- No hay recuperación automática del journal: se avisa de operaciones inacabadas para revisarlas a mano.
- Los metadatos EXIF/GPS/XMP se eliminan siempre en 0.1.0; solo el ICC es conservable.
- Las colisiones de nombres se detectan con normalización Unicode NFC y, en Windows y macOS, sin distinguir mayúsculas.
- Las rutas de red y algunos sistemas de archivos no garantizan atomicidad.
- Los binarios no están firmados; Windows SmartScreen y macOS Gatekeeper pueden avisar.
Ficha técnica
| Campo | Valor |
|---|---|
| Versión | 0.1.0 · 24 de octubre de 2026 |
| Autor | JaMoLpE88 |
| Licencia | MIT |
| Lenguaje | Rust |
| Interfaz | TUI sobre ratatui y crossterm |
| Plataformas | Windows 11 x64 · macOS 13+ (Apple Silicon e Intel) · Linux x86_64 musl |
| Formatos | JPEG, PNG y WebP; AVIF no incluido en 0.1.0 |
| Red | Ninguna conexión |
| Telemetría | Ninguna |
| Repositorio | github.com/JaMoLpE88/ImgShrink |
| Web | jmolo.es |
Preguntas frecuentes
¿Sube mis imágenes a algún sitio?
No. Todo el procesamiento ocurre en el equipo. No abre conexiones de red, no envía imágenes, rutas ni estadísticas y no incluye telemetría.
¿Es gratis?
Sí. Se publica con licencia MIT, que permite usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar y vender el software conservando el aviso de copyright y la licencia. También se puede usar en un entorno comercial.
¿Funciona en Windows 10?
Sí, con el mismo ZIP de Windows 11 x64, pero es mejor esfuerzo: Windows 10 está fuera de soporte. Windows ARM64 y Linux ARM64 aún no se publican.
¿Tiene interfaz gráfica?
No. Es una TUI: se ejecuta en una terminal real y se maneja con teclado. No está pensada para abrirse con doble clic.
¿Convierte a AVIF?
No en 0.1.0. Entra JPEG, PNG y WebP; sale JPEG, PNG o WebP según el perfil.
¿Puedo recuperar un original sobrescrito?
No de forma automática. El journal permite detectar una operación inacabada, pero no restaura los datos. Si vas a sobrescribir, conserva una copia.
Licencia y autoría
ImgShrink es un proyecto de JaMoLpE88 publicado con licencia MIT. El código, las releases y la documentación viven en github.com/JaMoLpE88/ImgShrink; la web del estudio es jmolo.es.
Copyright (c) 2026 JaMoLpE88. El software se ofrece sin garantías. Consulta el archivo LICENSE para el texto completo y THIRD_PARTY.md para las licencias de las dependencias.
