https://github.com/fabianwimberger/img-convert
Cross-platform desktop GUI for batch image conversion to JPG, AVIF, JXL, and HEIC. EXIF preservation and Lanczos3 resize.
https://github.com/fabianwimberger/img-convert
avif batch-processing cross-platform desktop-app egui exif gui heic image-converter jpeg jxl mozjpeg rust
Last synced: 29 days ago
JSON representation
Cross-platform desktop GUI for batch image conversion to JPG, AVIF, JXL, and HEIC. EXIF preservation and Lanczos3 resize.
- Host: GitHub
- URL: https://github.com/fabianwimberger/img-convert
- Owner: fabianwimberger
- License: mit
- Created: 2026-05-08T17:11:48.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-08T19:21:01.000Z (about 2 months ago)
- Last Synced: 2026-05-08T19:27:18.002Z (about 2 months ago)
- Topics: avif, batch-processing, cross-platform, desktop-app, egui, exif, gui, heic, image-converter, jpeg, jxl, mozjpeg, rust
- Language: Rust
- Homepage:
- Size: 224 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# img-convert
[](https://github.com/fabianwimberger/img-convert/actions/workflows/ci.yml)
[](https://opensource.org/licenses/MIT)
A small cross-platform desktop GUI for batch resizing and compressing folders of images to JPG, AVIF, JXL, or HEIC.
## Background
Photographers and content creators routinely need to push hundreds of RAW exports through the same resize-and-compress pipeline before publishing to web or mobile. Doing it through the encoder CLIs is fast but tedious; doing it through Photoshop or Lightroom is slow and heavy. This wraps the best-of-breed encoders (`cjpeg`, `avifenc`, `cjxl`, `heif-enc`) behind a small native UI so a folder can be batched in a few clicks, with EXIF passthrough and a JPEG → JXL lossless fast path.
Pick a folder, choose format, resolution and quality, hit Convert — outputs land in folder/converted/
## Features
- **Batch processing** — convert an entire folder in parallel
- **Format choice** — JPG (`cjpeg`), AVIF (`avifenc`), JXL (`cjxl`), HEIC (`heif-enc`)
- **Wide input support** — JPEG, PNG, TIFF, WebP, GIF, BMP, ICO, TGA, QOI, PNM, EXR, HDR, DDS, Farbfeld
- **Lanczos3 resampling** — high-quality resize at the short side
- **JPEG → JXL fast path** — lossless transcode when no resize is needed
- **EXIF preservation** — copied via `exiftool` when available
- **Drag-and-drop** folder selection
- **Light / dark theme**
- **Cross-platform** — Linux, macOS, Windows
## Pipeline
```mermaid
flowchart LR
S[Source images] --> D[Decode
image-rs]
D --> R[Lanczos3 resize]
R --> E[Encode
cjpeg / avifenc / cjxl / heif-enc]
E --> X[EXIF copy
exiftool]
X --> O[folder/converted/*]
```
## Quick Start
```bash
# Build
cargo build --release
# Run
./target/release/img-convert
```
## Install
Install into `~/.local/bin/img-convert`:
```bash
cargo install --path . --root ~/.local --force
```
Or use cargo's default location (`~/.cargo/bin/img-convert`):
```bash
cargo install --path . --force
```
## External Encoders
Only the encoders for formats you intend to use need to be on `$PATH`. The GUI shows availability and disables formats whose encoder is missing.
| Format | Command | Typical package |
| ------ | --------- | --------------------------------- |
| JPG | `cjpeg` | `mozjpeg` / `libjpeg-turbo` |
| AVIF | `avifenc` | `libavif` / `libavif-utils` |
| JXL | `cjxl` | `libjxl` / `jpeg-xl` |
| HEIC | `heif-enc`| `libheif` / `libheif-tools` |
| EXIF | `exiftool`| `perl-image-exiftool` / `exiftool`|
## Configuration
| Setting | Options |
| ---------- | ---------------------------------------------------- |
| Format | JPG / AVIF / JXL / HEIC |
| Resolution | Original / High (3000 px) / Low (1440 px) short side |
| Quality | High / Medium / Low (per-format quality mapping) |
| EXIF | Preserve / strip |
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md). Please report security issues privately — see [SECURITY.md](SECURITY.md).
## License
MIT License — see [LICENSE](LICENSE) file.
### Third-Party Tools
| Tool | License | Source |
| --------- | ------------------------------------------------------------------------ | --------------------------------------- |
| mozjpeg | [BSD-3-Clause / IJG](https://github.com/mozilla/mozjpeg/blob/master/LICENSE.md) | https://github.com/mozilla/mozjpeg |
| libavif | [BSD-2-Clause](https://github.com/AOMediaCodec/libavif/blob/main/LICENSE) | https://github.com/AOMediaCodec/libavif |
| libjxl | [BSD-3-Clause](https://github.com/libjxl/libjxl/blob/main/LICENSE) | https://github.com/libjxl/libjxl |
| libheif | [LGPL-3.0+](https://github.com/strukturag/libheif/blob/master/COPYING) | https://github.com/strukturag/libheif |
| ExifTool | [Artistic / GPL](https://exiftool.org/#license) | https://exiftool.org/ |