Compare commits
1 Commits
v1.4.2-rc.
...
v1.4.2-rc.
| Author | SHA1 | Date | |
|---|---|---|---|
| d416463242 |
@@ -12,7 +12,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
### Added
|
### Added
|
||||||
|
|
||||||
- HEIC/HEIF image format support for iPhone photo uploads
|
- HEIC/HEIF image format support for iPhone photo uploads
|
||||||
- Automatic HEIC to JPEG conversion (browsers cannot display HEIC)
|
- MPO (Multi-Picture Object) format support for iPhone depth/portrait photos
|
||||||
|
- Automatic HEIC/MPO to JPEG conversion (browsers cannot display these formats)
|
||||||
- Graceful error handling if pillow-heif library not installed
|
- Graceful error handling if pillow-heif library not installed
|
||||||
|
|
||||||
### Dependencies
|
### Dependencies
|
||||||
|
|||||||
@@ -160,6 +160,18 @@ def validate_image(file_data: bytes, filename: str) -> Tuple[bytes, str, int, in
|
|||||||
file_data = output.getvalue()
|
file_data = output.getvalue()
|
||||||
img = Image.open(io.BytesIO(file_data))
|
img = Image.open(io.BytesIO(file_data))
|
||||||
|
|
||||||
|
# MPO (Multi-Picture Object) conversion (v1.4.2)
|
||||||
|
# MPO is used by iPhones for depth/portrait photos - extract primary image as JPEG
|
||||||
|
if img.format == 'MPO':
|
||||||
|
output = io.BytesIO()
|
||||||
|
# Convert to RGB if needed
|
||||||
|
if img.mode in ('RGBA', 'P'):
|
||||||
|
img = img.convert('RGB')
|
||||||
|
img.save(output, format='JPEG', quality=95)
|
||||||
|
output.seek(0)
|
||||||
|
file_data = output.getvalue()
|
||||||
|
img = Image.open(io.BytesIO(file_data))
|
||||||
|
|
||||||
# Check format is allowed
|
# Check format is allowed
|
||||||
if img.format:
|
if img.format:
|
||||||
format_lower = img.format.lower()
|
format_lower = img.format.lower()
|
||||||
|
|||||||
Reference in New Issue
Block a user