A Python library for converting between different image formats with metadata preservation
Project description
🖼️ ImageConvert
ImageConvert is a robust Python library designed for seamless conversion between modern image formats and PDFs. Unlike basic converters, it prioritizes data integrity—preserving EXIF metadata, GPS coordinates, and original file timestamps during the process.
✨ Key Features
- 🔄 Universal Conversion: Support for JPEG, PNG, WebP, HEIC/AVIF, TIFF, BMP, and more.
- 📄 PDF Power Tools:
- PDF to Image: Render PDF pages as high-quality images.
- Image to PDF: Compile multiple images into a single document.
- 💾 Metadata Safe: Preserves EXIF data (Camera model, ISO, GPS) during conversion.
- ⏱️ Time Travel: Retains original file creation, access, and modification timestamps (Windows/Linux/macOS supported).
- 📂 Batch Processing: Recursively convert entire folder structures with a single command (stream results, optional multi-core).
📃 Full Documentation
For a complete guide on all classes, methods, and parameters, please see the API Reference.
Explore the complete documentation and examples here:
👉 https://ricardos-projects.gitbook.io/imageconvert-docs
📦 Installation
pip install imageconvert
Note: This automatically installs necessary dependencies like pillow-heif (for AVIF/HEIC) and pymupdf (for PDF).
🚀 Quick Start
1. Basic Conversion
Convert single images easily. Metadata is preserved by default.
from imageconvert import ImageConvert
ImageConvert.convert("vacation.heic", "vacation.jpg")
ImageConvert.convert("input.png", "output.webp", quality=85)
2. PDF Operations
Handle PDF documents without external tools.
# Extract all pages from a PDF as High-Res JPEGs
ImageConvert.pdf_to_images("contract.pdf", "output_folder", dpi=300)
# Create a PDF from a list of images (A4 size, contained fit)
ImageConvert.images_to_pdf(
["scan1.jpg", "scan2.jpg"],
"combined_doc.pdf",
fit_method="contain"
)
3. Batch Processing
Convert an entire directory tree. Useful for optimizing libraries or web assets. Stream results as they finish and optionally use multiple processes.
results = ImageConvert.batch_convert(
input_dir="./raw_photos",
output_dir="./web_ready",
output_format=".webp",
recursive=True,
skip_existing=True,
workers=4, # optional parallelism
stream=True # yields as soon as a file is done
)
for out_path in results:
print("converted:", out_path)
skip_existing now compares modification times, so edited sources are re-converted even if an older output file exists.
### 4. Extracting Metadata
Get technical details, including GPS coordinates and PDF info.
```python
info = ImageConvert.get_image_info("photo.jpg")
print(f"Camera: {info.get('camera')}")
# Output: {'make': 'Apple', 'model': 'iPhone 13 Pro', 'exposure': {'iso': 120...}}
if 'gps' in info:
print(f"Location: {info['gps']}")
# Output: {'latitude': 40.7128, 'longitude': -74.0060}
🩰 Supported Formats
| Format | Extension | Read | Write | Notes |
|---|---|---|---|---|
| JPEG | .jpg, .jpeg, .jfif |
✅ | ✅ | Optimized encoding |
| PNG | .png |
✅ | ✅ | Lossless |
| WebP | .webp |
✅ | ✅ | Google's web format |
| HEIC | .heic, .heif |
✅ | ✅ | iOS High Efficiency |
| AVIF | .avif |
✅ | ✅ | Next-gen compression |
| TIFF | .tiff, .tif |
✅ | ✅ | High quality archival |
.pdf |
✅ | ✅ | Multi-page support | |
| RAW | .raw |
✅ | ❌ | Read-only |
| BMP | .bmp |
✅ | ✅ | Basic bitmap |
🤝 Contributing
Contributions are welcome! Please visit the GitHub Repository to report bugs or submit pull requests.
📄 License
This project is licensed under the MIT License.
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 imageconvert-0.4.0.tar.gz.
File metadata
- Download URL: imageconvert-0.4.0.tar.gz
- Upload date:
- Size: 15.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df4c9b16d76a77cf1619b402e591cb789b67ba4f6870fb6683f71adfce6cb5e7
|
|
| MD5 |
668a1fd0e4603ce507d96e08733a86a1
|
|
| BLAKE2b-256 |
3af0bd33760cb94451a342cbe92ae092e03fcf63d521b243d252dab102268656
|
File details
Details for the file imageconvert-0.4.0-py3-none-any.whl.
File metadata
- Download URL: imageconvert-0.4.0-py3-none-any.whl
- Upload date:
- Size: 13.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
98039ba300ce0195c441ccbf4d8b8ebdb5472a0d6eca114131345f8c1ab04731
|
|
| MD5 |
015d8ab814aeebb91576612fd8dbd963
|
|
| BLAKE2b-256 |
c2fd5216cb8bef7df5598f34738f7b15f898a1711d36fc2a209d1b169857e362
|