@@ -388,6 +388,7 @@ def test_rgba():
388388@pytest .mark .enable_socket ()
389389def test_cmyk ():
390390 """Decode cmyk"""
391+ # JPEG compression
391392 try :
392393 from Crypto .Cipher import AES # noqa: F401
393394 except ImportError :
@@ -401,11 +402,30 @@ def test_cmyk():
401402 BytesIO (get_pdf_from_url (url_png , name = name_png ))
402403 ) # not a pdf but it works
403404 data = reader .pages [1 ].images [0 ]
405+ assert data .image .mode == "CMYK"
406+ assert ".jpg" in data .name
404407 diff = ImageChops .difference (data .image , refimg )
405408 d = sqrt (
406409 sum ([(a * a + b * b + c * c + d * d ) for a , b , c , d in diff .getdata ()])
407410 ) / (diff .size [0 ] * diff .size [1 ])
408411 assert d < 0.01
412+ # deflate
413+ url = "https://github.com/py-pdf/pypdf/files/12078533/cmyk2.pdf"
414+ name = "cmyk_deflate.pdf"
415+ reader = PdfReader (BytesIO (get_pdf_from_url (url , name = name )))
416+ url_png = "https://github.com/py-pdf/pypdf/files/12078556/cmyk.tif.txt"
417+ name_png = "cmyk_deflate.tif"
418+ refimg = Image .open (
419+ BytesIO (get_pdf_from_url (url_png , name = name_png ))
420+ ) # not a pdf but it works
421+ data = reader .pages [0 ].images [0 ]
422+ assert data .image .mode == "CMYK"
423+ assert ".tif" in data .name
424+ diff = ImageChops .difference (data .image , refimg )
425+ d = sqrt (
426+ sum ([(a * a + b * b + c * c + d * d ) for a , b , c , d in diff .getdata ()])
427+ ) / (diff .size [0 ] * diff .size [1 ])
428+ assert d < 0.001 # lossless compression expected
409429
410430
411431@pytest .mark .enable_socket ()
0 commit comments