Skip to content

Commit

Permalink
Merge pull request #5321 from radarhere/tiff_icc_profile
Browse files Browse the repository at this point in the history
Save ICC profile from TIFF encoderinfo
  • Loading branch information
hugovk committed Mar 14, 2021
2 parents 982837e + f42d6cf commit 1c086c6
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 2 deletions.
2 changes: 2 additions & 0 deletions Tests/test_file_png.py
Expand Up @@ -517,6 +517,8 @@ def test_save_icc_profile(self):

def test_discard_icc_profile(self):
with Image.open("Tests/images/icc_profile.png") as im:
assert "icc_profile" in im.info

im = roundtrip(im, icc_profile=None)
assert "icc_profile" not in im.info

Expand Down
22 changes: 22 additions & 0 deletions Tests/test_file_tiff.py
Expand Up @@ -568,6 +568,28 @@ def test_saving_icc_profile(self, tmp_path):
with Image.open(tmpfile) as reloaded:
assert b"Dummy value" == reloaded.info["icc_profile"]

def test_save_icc_profile(self, tmp_path):
im = hopper()
assert "icc_profile" not in im.info

outfile = str(tmp_path / "temp.tif")
icc_profile = b"Dummy value"
im.save(outfile, icc_profile=icc_profile)

with Image.open(outfile) as reloaded:
assert reloaded.info["icc_profile"] == icc_profile

def test_discard_icc_profile(self, tmp_path):
outfile = str(tmp_path / "temp.tif")

with Image.open("Tests/images/icc_profile.png") as im:
assert "icc_profile" in im.info

im.save(outfile, icc_profile=None)

with Image.open(outfile) as reloaded:
assert "icc_profile" not in reloaded.info

def test_close_on_load_exclusive(self, tmp_path):
# similar to test_fd_leak, but runs on unixlike os
tmpfile = str(tmp_path / "temp.tif")
Expand Down
5 changes: 3 additions & 2 deletions src/PIL/TiffImagePlugin.py
Expand Up @@ -1481,8 +1481,9 @@ def _save(im, fp, filename):

# preserve ICC profile (should also work when saving other formats
# which support profiles as TIFF) -- 2008-06-06 Florian Hoech
if "icc_profile" in im.info:
ifd[ICCPROFILE] = im.info["icc_profile"]
icc = im.encoderinfo.get("icc_profile", im.info.get("icc_profile"))
if icc:
ifd[ICCPROFILE] = icc

for key, name in [
(IMAGEDESCRIPTION, "description"),
Expand Down

0 comments on commit 1c086c6

Please sign in to comment.