Easy-to-use image converter for modern formats. Supports multithreading, drag 'n drop, and downscaling.
Available for Windows and Linux.
Read the Manual
Encode to JPEG XL, AVIF, WebP, and JPEG.
Generate fully compatible JPEGs with up to 35% better compression ratio.
Achieve exceptional quality at a modest size with JPEG XL and AVIF.
Encode images in parallel to speed up the process. Control how many threads to use for encoding.
Losslessly transcode JPEG to JPEG XL, and reverse the process when needed.
Scale down images to resolution, percent, shortest (and longest) side, or even file size.
Note
The recommended way of using XL Converter is through the official binary releases. The building process is time-consuming and tedious.
Install:
- Python 3.11.9 (check
Add python.exe to PATH
) - git
Clone the repo.
git clone -b stable --depth 1 https://github.com/JacobDev1/xl-converter.git
cd xl-converter
Setup venv
.
python -m venv env_build
env_build\Scripts\activate.bat
pip install -r requirements.txt
Install redistributable
Run the application
python main.py
You can also build it.
python build.py
Install packages.
sudo apt update
sudo apt install git make curl fuse p7z-full
Install xcb QPA dependencies.
sudo apt install '^libxcb.*-dev' libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev
Install pyenv via Automatic installer then add it to shell
Install Python build packages.
sudo apt install wget build-essential libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev liblzma-dev
Build and setup Python 3.11.9
.
pyenv install 3.11.9
pyenv global 3.11.9
Clone and set up the repo.
git clone -b stable --depth 1 https://github.com/JacobDev1/xl-converter.git
chmod -R +x xl-converter
cd xl-converter
Create and activate a virtual environment.
python -m venv env_build
source env_build/bin/activate
Install Python dependencies
pip install -r requirements.txt
Now, you can run it.
python main.py
or build it.
python build.py
To build XL Converter, you need to provide various binaries. This can be quite challenging.
Tip
Use the official builds as a reference.
Libraries:
- libjxl
v0.10.2
- libavif
v1.0.4
(AOM3.9.1
) - imagemagick
7.* Q16-HDRI
- exiftool
12.92
- oxipng
v0.9.2
The following static binaries are required:
- libjxl - cjxl, djxl, jxlinfo, cjpegli
- libavif - avifenc, avifdec
- imagemagick - magick (AppImage)
- oxipng - oxipng
Move them to xl-converter/bin/linux
.
The following static binaries are required:
- libjxl - cjxl.exe, djxl.exe, jxlinfo.exe, cjpegli.exe
- libavif - avifenc.exe, avifdec.exe
- imagemagick - magick.exe
- oxipng - oxipng.exe
- ExifTool - folder named
exiftool\
withexiftool.exe
andexiftool_files\
Move them to xl-converter\bin\win
.
Note
libjxl
does not feature UTF-8 support on Windows.
To enable it, embed this manifest into each EXE with mt.exe
from Visual Studio.
Important
This project runs on Python 3.11
. Other versions are not supported.
Note
Don't forget --depth 1
when running git clone
to avoid large files.
Create a test environment.
python -m venv env_dev
source env_dev/bin/activate
pip install -r requirements.txt
pip install -r requirements_test.txt
Run tests
python test.py
You can control which tests to run. Learn more with python test.py --help
.
test_old.py
is a deprecated, but still accessible test suite focusing on conversion results.
python test_old.py