Skip to content

Commit

Permalink
Merge pull request #2179 from endaxi/main
Browse files Browse the repository at this point in the history
CMYK JPEGs appearing inverted in PDF output
  • Loading branch information
liZe authored Jun 8, 2024
2 parents 2e3c480 + 3752e43 commit 4ce48a4
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions weasyprint/images.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ def __init__(self, pillow_image, image_id, image_data, filename=None,
self.height = pillow_image.height
self.ratio = (self.width / self.height) if self.height != 0 else inf
self.optimize = optimize = options['optimize_images']
self.app14 = getattr(original_pillow_image, 'app', {}).get('APP14')

if pillow_image.format in ('JPEG', 'MPO'):
self.format = 'JPEG'
Expand Down Expand Up @@ -150,6 +151,11 @@ def get_x_object(self, interpolate, dpi_ratio):
})

if self.format == 'JPEG':
if self.mode == 'CMYK' and self.app14 is not None:
# The presence of the APP14 segment indicates an Adobe image
# with inverted CMYK data. Specify a Decode Array to invert
# it again back to normal.
extra['Decode'] = '[1 0 1 0 1 0 1 0]'
extra['Filter'] = '/DCTDecode'
return pydyf.Stream([self.image_data], extra)

Expand Down

0 comments on commit 4ce48a4

Please sign in to comment.