Cada vez que necesitaba convertir una imagen a WebP, redimensionar o sacarle los metadatos EXIF, terminaba en alguna página random que te pide subir el archivo a un servidor. Tus fotos viajando a quién sabe dónde, para una operación que cualquier computadora moderna puede hacer en milisegundos.
Me cansé de eso y armé Pixora: una app de escritorio, open source, que procesa imágenes 100% en tu máquina. Sin internet, sin cuenta, sin nube.
Pixora is a free, open-source desktop app for image processing. Convert formats, resize, remove backgrounds with AI, and strip metadata — all 100% locally on your machine, with no internet required after setup.
app.mp4
Built by Norberto Krucheski.
Download
Installers are automatically built for every release via GitHub Actions.
| Platform | Download |
|---|---|
| Windows | ⬇ Download for Windows (.exe) |
| macOS (Apple Silicon M1 or higher) | ⬇ Download for macOS (.dmg) |
| Linux | ⬇ Download for Linux (.AppImage / .deb) |
Just download, install, and run — no account, no setup, no cloud.
Features
| Feature | Details |
|---|---|
| Format Conversion | Convert between WebP, JPEG, and PNG |
| Quality Control | Adjustable quality slider (1–100%) |
| Smart Resize | 10 built-in presets (hero, blog, avatar, 4K…) + custom dimensions. Aspect ratio always preserved. |
| EXIF & Metadata | View full metadata (camera, GPS, date, exposure…) and strip |
Qué hace
- Conversión de formato — WebP, JPEG, PNG, con un slider de calidad
- Redimensionar — 10 presets (hero, blog, avatar, 4K) o dimensiones custom. Siempre preserva el aspect ratio
- Ver y eliminar metadatos EXIF — cámara, GPS, fecha, todo
- Remover fondo con IA — modelo ONNX local, sin API key, funciona offline
- Procesamiento masivo — arrastrás un montón de imágenes y las procesa en paralelo. Exportás todo como ZIP
- Vista antes/después — slider interactivo para comparar el resultado
Todo esto funciona sin conexión a internet (después de la primera descarga del modelo de IA).
Por qué Tauri 2 + Rust en vez de Electron
Electron es genial para muchas cosas, pero para procesar imágenes necesitaba velocidad real. No "velocidad aceptable", sino que un batch de 8 fotos pesadas no trabe la interfaz.
Tauri 2 me dejó combinar lo mejor de dos mundos:
- El frontend es React 18 con TypeScript. Toda la UI, los paneles, la grilla de imágenes, el slider antes/después. React maneja el estado y los re-renders, pero nunca toca un archivo de imagen directamente.
- El backend es Rust puro. Resize con filtro Lanczos3, conversión de formatos, limpieza de EXIF recodificando desde cero, inferencia del modelo ONNX para remover fondos, y creación de ZIPs. Todo compilado a código nativo.
Rust corre a velocidad de C sin garbage collector. Sin pausas, sin demoras random. Las imágenes se procesan en paralelo usando un pool de workers dimensionado a los núcleos del CPU. En un Mac con chip M, procesar 8 imágenes tarda prácticamente lo mismo que procesar 1.
El detalle técnico que más me costó
La comunicación entre React y Rust pasa por un canal IPC que expone Tauri. La primera idea obvia fue: pasar la imagen como base64 por ese canal. Funciona, pero bloquea el thread de JavaScript en cada llamada. Con una imagen grande se nota. Con un batch de 10, la UI se congela.
La solución fue cambiar el enfoque: todo el procesamiento corre en Rust, y al frontend solo le devuelvo la ruta de un archivo temporal. Menos de 200 bytes viajando por el IPC en vez de megabytes de base64. La interfaz lee ese archivo una sola vez para mostrarlo.
Parece un cambio chico, pero fue lo que hizo que el procesamiento masivo funcione sin que la app se trabe.
Remoción de fondo con IA — offline
Esto es lo que más me gustó implementar. Usa IS-Net, un modelo ONNX cuantizado que pesa ~42 MB. Se descarga la primera vez que lo usás y después funciona completamente offline.
La inferencia corre en ONNX Runtime para Rust (ort crate), directamente en CPU. No necesitás API key, no necesitás GPU, no necesitás nada externo.
El modelo se cachea en:
| Sistema | Ubicación |
|---|---|
| macOS | ~/Library/Application Support/pixora/ |
| Windows | %LOCALAPPDATA%\pixora\ |
| Linux | ~/.local/share/pixora/ |
Stack completo
| Capa | Tecnología |
|---|---|
| Desktop | Tauri 2 (Rust + WebView nativo) |
| Frontend | React 18 + TypeScript |
| Bundler | Vite 5 |
| Estilos | Tailwind CSS |
| Estado | Zustand |
| Imágenes |
image crate (resize, compress, convert) |
| Metadatos | kamadak-exif |
| IA |
ort (ONNX Runtime) + IS-Net |
| ZIP |
zip crate |
Probalo
Hay instaladores listos para descargar:
-
Windows —
.exe -
macOS (Apple Silicon) —
.dmg -
Linux —
.AppImage/.deb
Descargá la última versión acá
O si preferís compilar desde el código fuente:
git clone https://github.com/NorbertOSK/pixora.git
cd pixora
bun install
bun start
La primera vez tarda unos minutos porque compila el backend de Rust. Después arranca rápido.
Privacidad
Tus imágenes nunca salen de tu máquina. No hay servidor, no hay telemetría, no hay analytics. El modelo de IA se descarga una sola vez y listo.
Si te resulta útil, una estrellita en el repo ayuda un montón 😁
Pixora is a free, open-source desktop app for image processing. Convert formats, resize, remove backgrounds with AI, and strip metadata — all 100% locally on your machine, with no internet required after setup.
app.mp4
Built by Norberto Krucheski.
Download
Installers are automatically built for every release via GitHub Actions.
Platform
Download
Windows
⬇ Download for Windows (.exe)
macOS (Apple Silicon M1 or higher)
⬇ Download for macOS (.dmg)
Linux
⬇ Download for Linux (.AppImage / .deb)
Just download, install, and run — no account, no setup, no cloud.
Features
Feature
Details
Format Conversion
Convert between WebP, JPEG, and PNG
Quality Control
Adjustable quality slider (1–100%)
Smart Resize
10 built-in presets (hero, blog, avatar, 4K…) + custom dimensions. Aspect ratio always preserved.
EXIF & Metadata
View full metadata (camera, GPS, date, exposure…) and strip

Top comments (0)