Thanks for taking the time to explain it.

Inline...

On 5/20/22 19:50, Philip Race wrote:
Identifying the intended color space of a JPEG is so much guesswork ..

and we've not had support for ARGB since JDK 10 which was the last release
to contain the Sun/Oracle "closed" support for that (from Kodak!) and OpenJDK NEVER had it.

See
https://docs.oracle.com/en/java/javase/17/docs/api/java.desktop/javax/imageio/metadata/doc-files/jpeg_metadata.html

Optional ColorSpace support: Handling of PhotoYCC (YCC), PhotoYCCA (YCCA), RGBA and YCbCrA color spaces by the standard plugin, as described below, is dependent on capabilities of the libraries used to interpret the JPEG data. Thus all consequential behaviors are optional. If the support is not available when decoding, the color space will be treated as unrecognized and the appropriate default color space for the specified number of component channels may be used

So if you have ARGB you are in the lap of the Gods ..


thx, I digested the content and I think I get it.

I think before the latest change there was no default 4 component space, so you got an exception,
now there's something we default to assuming we are seeing ..

That is exactly the case. I would like a meaningful exception to be thrown
so as one knows that the data are being interpreted incorrectly though.

Something along these lines (tests included):

https://github.com/openjdk/jdk/pull/8846

Why in TIFF reader and not in JPEG decompressor: Both GIMP and ImageMagic can
create RGBA JPEG compressed TIFF without any warning for you, while producing
RGBA JPEG with these common tools is something I didn't encounter.


Cheers
Karm


-phil

On 5/20/22 7:07 AM, Brett Okken wrote:
JPEG support for RGB with transparency/alpha channel is pretty spotty.
https://stackoverflow.com/a/57626892/676877

On Fri, May 20, 2022 at 8:12 AM Michal Karm <michal.baba...@gmail.com> wrote:

    I stepped the flow in a debugger and I narrowed
    down the reproducer to a more focused, simpler
    description and test data:

    https://github.com/Karm/dev-null/blob/main/jpegtiff/README.md

    TL;DR:

    JPEG compressed RGB image in TIFF with transparency makes
    the TIFF decoder to push 4 components data to the JPEG reader.

    The JPEG reader wrongly guesses that the data is CMYK now (based on the
    number
    of components).

    If the image is GRAYSCALE though, it ends up in Unsupported Image Type
    because JPEG reader doesn't try to guess it's CMYK.


    Solution...I don't know.

    Would it make sense if I transform the data to the number of
    components the JPEG reader expects?
    All the necessary information is there in the TIFF metadata,
    e.g. it knows the space is RGB and not CMYK, it knows that there
    is a transparency saved with the tile.

    THX for hints

    Karm


    On 5/17/22 21:52, Philip Race wrote:
    > This could be a bug in the TIFF plugin.
    > Hard to say without debugging it.
    >
    > -phil.
    >
    >
    > On 5/17/22 7:04 AM, Michal Karm wrote:
    >> Hello,
    >>
    >> There used to be an Unsupported Image Type exception thrown
    >> when one wanted to decode a TIFF container with JPEG compressed image.
    >>
    >> That behavior has changed, there is no exception now, although the
    >> resulting image is incorrect.
    >>
    >> I outlined the details in this doc [1], including a small reproducer.
    >>
    >> The test image is not anything from a fuzzer, it's just me
    >> clicking Export As in GIMP.
    >>
    >> Thanks for feedback
    >>
    >> Cheers
    >> Karm
    >>
    >>
    >> [1]
    >>
    
https://urldefense.com/v3/__https://github.com/Karm/dev-null/blob/main/jpegtiff/README.md__;!!ACWV5N9M2RV99hQ!Kw41ShsuTSfpVPMZFrXmdQ7ZETNdkLTk9Xd1NDWELvCXV0fyIqg4sXi5Z1aYfjMoG-5fS0gki8dnN8bQjSYM0g$

    >>
    >>
    >> Karm Michal Babacek
    >>
    >


    Michal Karm Babacek

-- Sent from my Hosaka Ono-Sendai Cyberspace 7




Michal Karm Babacek

--
Sent from my Hosaka Ono-Sendai Cyberspace 7

Reply via email to