Bug 340947 - Conversion between 8 bits and 16 bits float causes canvas background color deviation
Summary: Conversion between 8 bits and 16 bits float causes canvas background color de...
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Color models (show other bugs)
Version: git master (please specify the git hash!)
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-11-14 07:57 UTC by Tyson Tan
Modified: 2014-12-29 04:30 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Tyson Tan 2014-11-14 07:57:59 UTC
When converting an 8 bits picture to 16 bits float, Krita changes the image's canvas color parameters, causing bug 340088 to happen.

When converting an 16 bits float picture to 8 bits, Krita also changes the image's canvas color, causing visible canvas color deviation.

When undoing such changes, Krita cause another kind of canvas color deviation.

Reproducible: Always

Steps to Reproduce:
____________________________ 8 Bits > 16 Bits Float part

1. Create a 8 bits document
2. Check: Menu > Image > Image Background Color and Transparency (RGBA = 0,0,0,0)
3. Menu > Image > Convert Image Color Space > 16 bit Float
4. Check: Menu > Image > Image Background Color and Transparency (RGBA = 0,0,184,0)

If original (RGBA = 255,255,255,0), the result is (RGBA = 195,1,185,0)
If original (RGBA = 255,255,255,255), the result is (RGBA = 188,188,188,0)
If original (RGBA =0,0,0,255), the result is (RGBA = 0,187,187,0)

____________________________ Bug 340088 related part and workaround

5. Save and reopen the converted document
6. Hide layer 1, draw something on layer 2, yellow border happens
7. Menu > Image > Image Background Color and Transparency, change RGBA to 0,0,0,0
8. Yellow border disappears

If set RGBA = 255,255,255,0, the border becomes white. Only when RGBA = 0,0,0,0 it would disappear.

____________________________ 16 Bits to 8 Bits part

1. Create a 16 bits float document with WHITE as canvas color
2. Check: Menu > Image > Image Background Color and Transparency (RGBA = 255,255,255,255)
3. Menu > Image > Convert Image Color Space > 8 bits
4. Check: Menu > Image > Image Background Color and Transparency (RGBA = 0,60,0,60), canvas becomes green and semi-transparent.

____________________________ Undoing part

5. Ctrl + Z to undo the 16 bits to 8 bits conversion
6. Check: Menu > Image > Image Background Color and Transparency (RGBA = 255,255,191,0)



Since undoing causes a different kind of canvas color deviation, I'm not sure if this is caused by lcms alone.

Since this bug leads to Bug 340088, it is very confusing to people that do a lot of color space conversion, especially for those whom do not know.
Comment 1 Dmitry Kazakov 2014-12-26 17:05:43 UTC
Git commit 6a73f69b19ab14bf1ef26acec61d2f70942b861b by Dmitry Kazakov.
Committed on 26/12/2014 at 16:03.
Pushed by dkazakov into branch 'calligra/2.9'.

Convert the default pixel correctly

We should call the conversion function from the source color space

M  +4    -3    krita/image/kis_group_layer.cc

http://commits.kde.org/calligra/6a73f69b19ab14bf1ef26acec61d2f70942b861b
Comment 2 Tyson Tan 2014-12-29 04:30:26 UTC
Thank you, Dmitry! :)