Fast HEIC to JPEG converter
Project description
heic2jpg
heic2jpg is a fast HEIC to JPEG converter designed to resolve the compatibility gap between iPhone image files and common desktop workflows. Conversion runs in parallel across worker threads using pillow-heif for fast, in-process decoding in macOS, Linux or Windows.
🚀 Installation
- Install the
uvpackage manager with the official installer, or:
- macOS:
brew install uv - Windows:
winget install astral-sh.uv - Linux (Debian):
apt-get install uv
- Install the tool:
uv tool install heic2jpg
- Test the installation (if the command is not recognised try
uv tool update-shelland restart your terminal):
heic2jpg --version
📖 Usage examples
Convert a single file:
heic2jpg path/to/photo.HEIC
Convert all files in directory:
heic2jpg path/to/photo/album
heic2jpg # current directory
Convert all files in current directory recursively, preserving metadata and timestamps:
heic2jpg -Rmt
Other options:
-q, --quality [1-100] Target quality (default: 30)
-m, --metadata Preserve EXIF metadata
-t, --times Preserve source file timestamps
-k, --keep Keep originals (default: delete after conversion)
-R, --recursive Recurse into subdirectories when a directory is given
-f, --force Overwrite existing .jpg outputs
📊 Performance
pillow-heif's C code releases the Python's GIL during HEIF decode and JPEG encode. The default ThreadPoolExecutor therefore gets full CPU parallelism with no per-worker process startup cost. That offers over 6x the speed of traditional ImageMagick workflows.
| Version | Backend | 100 files |
|---|---|---|
| heic2jpg 2.0.0 | pillow-heif | ~2.5s |
| heic2jpg 1.1.0 | ImageMagick | ~15.5s |
Note: absolute throughput will vary with CPU and disk speed.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file heic2jpg-2.2.1.tar.gz.
File metadata
- Download URL: heic2jpg-2.2.1.tar.gz
- Upload date:
- Size: 20.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
16e1ca63973d793aeacac7221fa1f0e76c6fc7cd4ded39a4f6c386059954735a
|
|
| MD5 |
d41e4ba48aa3e9046752d946f96bfb89
|
|
| BLAKE2b-256 |
bcc9589bc0795d68058dd56ae14e2b373b6c073fea1614e5cc6c9c3ec12e7b5d
|
File details
Details for the file heic2jpg-2.2.1-py3-none-any.whl.
File metadata
- Download URL: heic2jpg-2.2.1-py3-none-any.whl
- Upload date:
- Size: 11.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e1cbb18644251d3552c72d40979a341d950801fe2ce32eda7ce02f2ffac3ec6
|
|
| MD5 |
5946290d18dcc3c50e5751785107e139
|
|
| BLAKE2b-256 |
73f872027f7df59487e5adce4c0aefe4f97b14fa2eacd8eab2525f61752710eb
|