mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-01-13 10:46:16 +03:00
Merge pull request #1 from radarhere/write-jpeg-com
Support saving JPEG comments
This commit is contained in:
commit
e71f7c1083
|
@ -86,18 +86,26 @@ class TestFileJpeg:
|
|||
assert len(im.applist) == 2
|
||||
|
||||
assert im.info["comment"] == b"File written by Adobe Photoshop\xa8 4.0\x00"
|
||||
assert im.app["COM"] == im.info["comment"]
|
||||
|
||||
def test_com_write(self):
|
||||
dummy_text = "this is a test comment"
|
||||
def test_comment_write(self):
|
||||
with Image.open(TEST_FILE) as im:
|
||||
with BytesIO() as buf:
|
||||
im.save(buf, format="JPEG")
|
||||
with Image.open(buf) as im2:
|
||||
assert im.app["COM"] == im2.app["COM"]
|
||||
with BytesIO() as buf:
|
||||
im.save(buf, format="JPEG", comment=dummy_text)
|
||||
with Image.open(buf) as im2:
|
||||
assert im2.app["COM"].decode() == dummy_text
|
||||
assert im.info["comment"] == b"File written by Adobe Photoshop\xa8 4.0\x00"
|
||||
|
||||
# Test that existing comment is saved by default
|
||||
out = BytesIO()
|
||||
im.save(out, format="JPEG")
|
||||
with Image.open(out) as reloaded:
|
||||
assert im.info["comment"] == reloaded.info["comment"]
|
||||
|
||||
# Test that a comment argument overrides the default comment
|
||||
for comment in ("Test comment text", b"Text comment text"):
|
||||
out = BytesIO()
|
||||
im.save(out, format="JPEG", comment=comment)
|
||||
with Image.open(out) as reloaded:
|
||||
if not isinstance(comment, bytes):
|
||||
comment = comment.encode()
|
||||
assert reloaded.info["comment"] == comment
|
||||
|
||||
def test_cmyk(self):
|
||||
# Test CMYK handling. Thanks to Tim and Charlie for test data,
|
||||
|
|
|
@ -714,9 +714,7 @@ def _save(im, fp, filename):
|
|||
|
||||
extra = info.get("extra", b"")
|
||||
|
||||
comment = info.get("comment")
|
||||
if comment is None and isinstance(im, JpegImageFile):
|
||||
comment = im.app.get("COM")
|
||||
comment = info.get("comment", im.info.get("comment"))
|
||||
if comment:
|
||||
if isinstance(comment, str):
|
||||
comment = comment.encode()
|
||||
|
@ -734,7 +732,7 @@ def _save(im, fp, filename):
|
|||
icc_profile = icc_profile[MAX_DATA_BYTES_IN_MARKER:]
|
||||
i = 1
|
||||
for marker in markers:
|
||||
size = struct.pack(">H", 2 + ICC_OVERHEAD_LEN + len(marker))
|
||||
size = o16(2 + ICC_OVERHEAD_LEN + len(marker))
|
||||
extra += (
|
||||
b"\xFF\xE2"
|
||||
+ size
|
||||
|
|
Loading…
Reference in New Issue
Block a user