Fixed: Preserve embedded ICC color profiles when converting and resizing images

Image.open() reads the source's ICC profile into img.info, but that dict resets to empty after convert() or resize(), and save() was never passing icc_profile anyway. DCI-P3 and Rec.2020 photos were silently falling back to sRGB interpretation once processed.
This commit is contained in:
Djeex
2026-08-17 15:13:36 +02:00
parent 193b1704f8
commit 26e3ca684b
+5 -1
View File
@@ -11,6 +11,7 @@ def convert_and_resize_image(input_path, output_path, resize=True, max_width=114
return
img = Image.open(input_path)
icc_profile = img.info.get("icc_profile")
if img.mode != "RGB":
img = img.convert("RGB")
@@ -27,7 +28,10 @@ def convert_and_resize_image(input_path, output_path, resize=True, max_width=114
if fmt == "JPEG":
output_path = output_path.with_suffix(".jpg")
img.save(output_path, fmt, quality=90 if fmt == "JPEG" else 100)
save_kwargs = {"quality": 90 if fmt == "JPEG" else 100}
if icc_profile:
save_kwargs["icc_profile"] = icc_profile
img.save(output_path, fmt, **save_kwargs)
logging.info(f"[✓] Processed image: {input_path}{output_path}")
except Exception as e: