WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
NEW
216645
[iOS 14] WebP images do not handle color profiles correctly
https://bugs.webkit.org/show_bug.cgi?id=216645
Summary
[iOS 14] WebP images do not handle color profiles correctly
Ali Juma
Reported
2020-09-17 07:33:31 PDT
Created
attachment 409031
[details]
Incorrectly rendered WebP image WebKit supports WebP images in iOS 14, but ICC profile support seems to be broken. I've attached an example WebP image that isn't rendered correctly in Safari. This is also filed as feedback FB7793986.
Attachments
Incorrectly rendered WebP image
(40.52 KB, image/webp)
2020-09-17 07:33 PDT
,
Ali Juma
no flags
Details
Expected image
(338.62 KB, image/png)
2020-09-17 07:35 PDT
,
Ali Juma
no flags
Details
View All
Add attachment
proposed patch, testcase, etc.
Ali Juma
Comment 1
2020-09-17 07:35:33 PDT
Created
attachment 409032
[details]
Expected image Here (as a PNG image) is the expected output for the WebP image.
Alexey Proskuryakov
Comment 2
2020-09-17 11:36:17 PDT
rdar://64790996
Jon Sneyers
Comment 3
2020-10-28 01:25:53 PDT
It looks like Chrome on iOS 14 and UIImage on iOS 14 have the same problem: it seems like an ICC profile in a WebP gets ignored, causing e.g. images with the Display P3 profile to look desaturated (presumably because they are misinterpreted as sRGB). I don't have access to the Core Image source code so I don't know how WebP suppport was implemented, but it's quite easy to forget about ICC profiles. To not ignore the ICC profile, you need to not just call the simple one-stop high-level decode function WebPDecodeRGBA(), but you also need to include webp/demux.h and do something like this: WebPDemuxer* demux = WebPDemux(&webp_data); uint32_t flags = WebPDemuxGetI(demux, WEBP_FF_FORMAT_FLAGS); // ... (Extract metadata). WebPChunkIterator chunk_iter; if (flags & ICCP_FLAG) WebPDemuxGetChunk(demux, "ICCP", 1, &chunk_iter); // ... (Consume the ICC profile in 'chunk_iter.chunk'). WebPDemuxReleaseChunkIterator(&chunk_iter); WebPDemuxDelete(demux); I hope this helps and we can avoid having to convert/clamp WebP images to the sRGB gamut!
jzern
Comment 4
2020-11-11 19:27:35 PST
I had filed FB8759612 similarly for Mac OS. Not much more to add except the original webkit patch and a few other links, from the feedback assistant: ---
https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/platform/testing/data/webp-color-profile-lossy.webp
WebP images can contain an embedded ICC profile that affects the rendering of the final image. Here are some relevant links to an old webkit patch and the tracking bug for chrome:
https://bugs.webkit.org/show_bug.cgi?id=112747
https://bugs.chromium.org/p/chromium/issues/detail?id=172308
The ‘purpur’ text should be purple in this image. See the jpg for reference:
https://houz.org/tmp/farbkreis.jpg
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug