You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Bruno P. Kinoshita (Jira)" <ji...@apache.org> on 2021/09/13 00:39:00 UTC

[jira] [Updated] (IMAGING-310) JpegImageParser: Grayscale JPEG file with app14Segment returns ColorType.UNKNOWN

     [ https://issues.apache.org/jira/browse/IMAGING-310?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Bruno P. Kinoshita updated IMAGING-310:
---------------------------------------
    Fix Version/s: 1.0-alpha3

> JpegImageParser: Grayscale JPEG file with app14Segment returns ColorType.UNKNOWN
> --------------------------------------------------------------------------------
>
>                 Key: IMAGING-310
>                 URL: https://issues.apache.org/jira/browse/IMAGING-310
>             Project: Commons Imaging
>          Issue Type: Bug
>          Components: Format: JPEG
>    Affects Versions: 1.0-alpha2
>            Reporter: John Phillips
>            Assignee: Bruno P. Kinoshita
>            Priority: Major
>             Fix For: 1.0-alpha3
>
>         Attachments: sample-grayscale-with-app14segment.jpg
>
>          Time Spent: 1h
>  Remaining Estimate: 0h
>
> In org.apache.commons.imaging.formats.jpeg. the logic to determine colorType (lines 825-970) does not account for a Grayscale image when there is an app14 segment present.
> When the number of components is 1 or 2, the colorType should always be Grayscale. None of the other logic would change that.
> It seems to me that the switch (numberOfComponents) statement should be moved to the top of this bit of code, and the rest of the logic should handled under Case 3 & 4:
> {noformat}
> // See http://docs.oracle.com/javase/6/docs/api/javax/imageio/metadata/doc-files/jpeg_metadata.html#color
> ImageInfo.ColorType colorType = ImageInfo.ColorType.UNKNOWN;
> switch (numberOfComponents) {
> case 1:
>     colorType = ImageInfo.ColorType.GRAYSCALE;
>     break;
>     
> case 2:
>     colorType = ImageInfo.ColorType.GRAYSCALE;
>     transparent = true;
>     break;
>     
> case 3:
> case 4:
>     // Some images have both JFIF/APP0 and APP14.
>     // JFIF is meant to win but in them APP14 is clearly right, so make it win.
>     if (app14Segment != null && app14Segment.isAdobeJpegSegment()) {
> etc.
> {noformat}
> Attached sample-grayscale-with-app14segment.jpg, which can be used to demonstrate the issue.
> I've modified the code locally, but I'm a newbie at submitting pull-requests....



--
This message was sent by Atlassian Jira
(v8.3.4#803005)