HEIC/HEIF Converter
Effortless HEIC/HEIF Image Conversion
A command-line tool for converting HEIC/HEIF image files to other common image formats (JPEG, PNG, BMP, TIFF, WebP). The converter includes embedded HEIC/HEIF codecs, eliminating the need for system-wide codec installation.
Overview
HEIC/HEIF Converter is a lightweight, efficient tool for converting Apple's HEIC/HEIF image format to more widely compatible formats like JPEG and PNG. Perfect for users transitioning between ecosystems or needing to share images across platforms.
Version: v1.2
License: GPLv3 (See LICENSE file)
Why Choose HEIC/HEIF Converter?
Embedded Codecs
No need to install system-wide codecs. Everything you need is included in the application.
Fast Processing
Multi-threaded conversion for batch processing with minimal resource usage.
Cross-Platform
Separate builds for Debian 9 and Debian 12/13 with full compatibility.
Features
Embedded Codecs
HEIC/HEIF codecs included if the system does not have them installed.
Multiple Output Formats
Convert to JPEG, PNG, BMP, TIFF, or WebP with adjustable quality settings.
Batch Processing
Convert entire directories of images with recursive directory processing.
Parallel Processing
Multi-threaded conversion for improved performance on modern hardware.
Preserve Metadata
Option to keep or strip EXIF data and color profiles from images.
Cross-Platform
Separate optimized builds for Debian 9 and Debian 12/13 systems.
Supported Formats
Input Formats
.heic, .HEIC
.heif, .HEIF
Output Formats
.jpg, .jpeg
.png
.bmp
.tiff, .tif
.webp
Installation
System Requirements
Debian 9 (Stretch)
- GCC 6.3 or higher
- CMake 3.7 or higher
- Standard C++17 development libraries
Debian 12/13 (Bookworm/Trixie)
- GCC 11 or higher
- CMake 3.18 or higher
- Standard C++17 development libraries
Dependencies
# Update system and install all dependencies
sudo apt-get update && sudo apt-get install -y \
build-essential \
cmake \
pkg-config \
git \
g++ \
make \
libheif-dev \
libpng-dev \
libjpeg-dev \
libwebp-dev \
libtiff-dev \
libheif1 \
libpng16-16 \
libjpeg-turbo8 \
libwebp7 \
libwebpdemux2 \
libwebpmux3 \
libtiff6 \
exiftool
Build Instructions
For Debian 12/13 Systems
# Clone the repository
git clone https://github.com/R2Innovation/heic_converter
cd heic_converter_v1.0
# Run build script for Debian 12/13
./scripts/build_debian12.sh
# The executable will be in build/debian12/bin/
For Debian 9 Systems
# Clone the repository
git clone https://github.com/R2Innovation/heic_converter
cd heic_converter_v1.0
# Run build script for Debian 9
./scripts/build_debian9.sh
# The executable will be in build/debian9/bin/
Manual Build (CMake)
mkdir -p build && cd build
cmake -DDEBIAN9_BUILD=ON .. # For Debian 9
# or
cmake -DDEBIAN12_BUILD=ON .. # For Debian 12/13
make -j$(nproc)
sudo make install # Optional
Usage Guide
Basic Syntax
heic_converter [options] <input> [output]
Command Examples
Convert a single file:
heic_converter image.heic
heic_converter image.heic image.jpg
heic_converter -f png image.heic
Convert with quality adjustment:
heic_converter -q 90 image.heic
heic_converter -c 9 image.heic # PNG compression
Batch conversion:
heic_converter -r ./photos ./converted
heic_converter -t 8 -r ./input_dir ./output_dir
Overwrite existing files:
heic_converter -o image.heic image.jpg
Verbose output:
heic_converter -v image.heic
Command Line Options
| Option | Description | Default |
|---|---|---|
-f, --format FORMAT |
Output format (jpg, png, bmp, tiff, webp) | jpg |
-q, --quality N |
JPEG quality (1-100) | 85 |
-c, --compression N |
PNG compression level (0-9) | 6 |
-t, --threads N |
Threads for batch processing | 4 |
-r, --recursive |
Process directories recursively | false |
-o, --overwrite |
Overwrite existing files | false |
-v, --verbose |
Enable verbose output | false |
--no-metadata |
Strip metadata from output | false |
-h, --help |
Show help message | - |
--version |
Show version information | - |
• Use parallel processing for batch conversions:
-t 8• Adjust quality settings for smaller file sizes
• Disable metadata if not needed:
--no-metadata• Use appropriate format for your use case
Documentation
Troubleshooting
Common Issues
"Cannot open file" error:
- Check file permissions
- Ensure the file is not corrupted
"Unsupported format" error:
- Verify the file has a .heic or .heif extension
- Try a different HEIC/HEIF file
Memory issues with large files:
- Reduce thread count:
-t 2 - Ensure sufficient system memory
Error Codes
| Code | Description |
|---|---|
| 0 | Success |
| 1 | Invalid arguments |
| 2 | Unsupported format |
| 3 | File not found |
| 4 | Read permission error |
| 5 | Write permission error |
| 6 | Decoding failed |
| 7 | Encoding failed |
| 8 | Memory allocation error |
| 9 | Codec initialization error |
| 10 | Batch processing error |
| 255 | Unknown error |
Project Structure
heic_converter_v1.0/
├── data/ # Embedded codecs
│ ├── debian9/ # Codecs for Debian 9
│ └── debian12/ # Codecs for Debian 12/13
├── scripts/ # Build scripts
├── include/ # Header files
├── src/ # Source files
└── tests/ # Test suite
License
Software is licensed under GPLv3. See the LICENSE file for detailed licensing information.
Support
For issues, questions, or feature requests:
- Check the troubleshooting section
- Review existing issues on GitHub
- Submit a new issue with detailed information
