heic-decode icon indicating copy to clipboard operation
heic-decode copied to clipboard

Color differences

Open greatestview opened this issue 3 years ago • 3 comments

I’m trying to figure this one out quite a while, maybe @catdad has an idea?

I’m using heic-convert to generate a buffer from a HEIC file and I have not managed to get a exact similar before/after image. The color contrast seems to be increased, resulting in some burnouts, and colors in general don’t match the original heic image (checked with Photoshop and other image programs, which can handle color profiles).

Since heic-convert uses heic-decode, I’ve tried a different setup with heic-decode and afterwards lovell/sharp with the same results.

This is an example of a HEIC file, left: original HEIC file with Display P3 color profile, right: after heic-decode also with Display P3 color profile (scaled down)

Bildschirmfoto 2021-05-07 um 20 41 20

As you can see there are several differences, e.g. a more intense red in the bricks on the left side, more intense black floor and burnouts in the fur on the right side.

I’m trying to understand, which library is responsible for that. Is it a missing or wrong parameter in heic-decode or libheif-js or something fundamental in libheif itself? Are color profiles ignored somewhere on the way?

Thank you for your answer and great work!

greatestview avatar May 07 '21 18:05 greatestview

This is probably a color space issue and it is probably an issue with libheif itself (heic-decode on its own does not do much). Would you be able to share a problem heic file here so that I can help investigate?

catdad avatar May 09 '21 18:05 catdad

Thank you for your quick response! It would be awesome if you could have a look into that issue because I’m not that familiar with the libheif internals. I attached the example heic file as well as the JPEG conversions.

greatestview avatar May 09 '21 19:05 greatestview

On this topic, which color space are the rgb values in anyway?

indutny-signal avatar Jul 31 '24 03:07 indutny-signal