Skip to content

Fix garbled thumbnails for grayscale/CMYK JPEG cover art - #14

Open
ElCruncharino wants to merge 1 commit into
enzo1982:masterfrom
ElCruncharino:fix-jpeg-grayscale-cover-art
Open

Fix garbled thumbnails for grayscale/CMYK JPEG cover art#14
ElCruncharino wants to merge 1 commit into
enzo1982:masterfrom
ElCruncharino:fix-jpeg-grayscale-cover-art

Conversation

@ElCruncharino

Copy link
Copy Markdown

ImageLoaderJPEG::Load() copies each decoded scanline assuming 3 bytes
per pixel, but never forces libjpeg's output color space. A grayscale
(1 component) or CMYK (4 component) source JPEG then produces a row
buffer shorter or longer than the loop assumes, so most of each row
gets read out of bounds. Embedded cover art using either format shows
up as partially garbled noise.

Fix: set cinfo.out_color_space = JCS_RGB before starting decompression,
so libjpeg always hands back a 3-component RGB buffer regardless of
the source's native color space.

ImageLoaderJPEG::Load() hardcoded a 3-components-per-pixel row layout
but never forced libjpeg's output color space, so single-component
(grayscale) or 4-component (CMYK) source JPEGs produced a shorter row
buffer than the copy loop assumed, reading past its end for most of
each row.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant