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, --ascii o --no-mouse.
  • En servidores sin terminal interactiva puedes usar --selftest y --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, usa shasum -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:

  1. Finalidad. Compartir, Ahorrar espacio, Web o Personalizado. Cada opción precarga un perfil.
  2. Selección. Navega, marca archivos y añade carpetas; decide si incluir subcarpetas.
  3. Análisis. Revisa cuántas imágenes hay, su tamaño, conflictos y avisos.
  4. Destino. Carpeta separada, sobrescritura o sufijo.
  5. Revisión. Comprueba la configuración y ajusta opciones con o.
  6. Proceso. Progreso global, imagen actual, etapas y errores.
  7. Resumen. Ahorro real, tiempos, informe y carpeta de salida.
Selector de archivos de ImgShrink con la carpeta Viaje abierta, tres fotos marcadas y el panel de selección con subcarpetas activadas
Selección. El explorador marca archivos con 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.

Pantalla de análisis de ImgShrink con 148 imágenes encontradas, 142 procesables, 6 omitidas y avisos sobre transparencia, perfil ICC, 16 bits y archivos animados
Análisis. Los avisos no son errores: explican qué se va a omitir o qué se va a transformar antes de que el proceso empiece. Aquí se ven transparencias, perfiles ICC, imágenes de 16 bits y archivos animados.

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.

Pantalla de proceso de ImgShrink con la barra global al 62 %, la imagen actual en etapa de codificación y dos incidencias de lectura
Proceso. Barra global, imagen actual, etapa, tiempos, datos acumulados e incidencias. La barra avanza por imágenes terminadas, no por un porcentaje estimado dentro de cada códec.

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.

Resumen de ImgShrink con 148 imágenes encontradas, 142 correctas, 438 MB de ahorro y la ruta del informe JSON
Resumen. Ahorro real, recuento por estado, tiempo total, carpeta de salida y ruta del informe. Solo se comparan las imágenes procesadas correctamente; las que fallan se reportan aparte.

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/imgshrink o ~/.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.

Diálogo de confirmación de sobrescritura de ImgShrink que pide escribir SOBRESCRIBIR para reemplazar 12 archivos y 38,4 MB
Sobrescritura. La acción no se habilita hasta que el texto coincide exactamente. El diálogo indica cuántos archivos y cuántos megabytes se van a reemplazar.

Antes de sustituir un original, ImgShrink:

  1. Escribe el resultado en un archivo temporal de la misma carpeta.
  2. Fuerza la escritura a disco.
  3. Vuelve a decodificar el temporal para comprobar que es legible.
  4. Comprueba que el original no cambió desde el análisis.
  5. 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.