Invalid embedded ICC profile


I found two PNG images in our codebase that - according to tEXT chunks were created with Greenshot. Those PNG files have an invalid ICC profile embedded where the PCS illuminant is not D50 (0x0000F6D6 / 0x00010000 / 0x0000D32D) like required by the current ICC spec, but 0x0000F6D6 / 0x00010000 / 0x0000D32B.




Robin Krom
September 28, 2016, 1:54 PM

Hi Björn,

thanks for reporting this, I myself unfortunately have no knowledge of ICC (or ICM) and don't really understand what you mean.

As Greenshot is a screenshot tool, which captures the content directly from the framebuffer, it doesn't care about profiles at all... everything is a 100% copy, but I do understand that as soon as you start using the images elsewhere the information is needed.

Greenshot is programmed in .NET and currently still uses the .NET Framework 2.0 (GDI+) where there is not much possible concerning ICC...
I didn't even know that a ICC profile was written, and have (currently) no knowledge of changeing what is written.
As far a I know LCS_sRGB is set when creating the screenshot in memory, what happens after this I do not know, but as far as I understood it this means no color profile was needed?

If you can help, that would be nice, if not we will see what information I can find to "fix" this...

You mention that you found 2 images, do you only have 2 or are some correct? How should I understand this? And what codebase are you talking about?

Best wishes,

Björn Kautler
September 28, 2016, 2:11 PM

I'm software developer and in our projects codebase I found three (two was a typo) invalid images by validating all files with ImageMagick s identify tool. The invalidity in these images is that in the embedded ICC profile of the PNGs there is one byte wrong that is required to be a specific value by the ICC specification. From text chunks in the PNG I see that those images were created with Greenshot. There are many Greenshot images in our codebase (mainly in the documentation), but only those three are invalid. And of all PNGs with an embedded ICC profile, only the ones taken by Greenshot (exactly these three) have this invalidity inside. As I'm not a .NET guy I fear I cannot help you on a deeper level when it comes to .NET usage.

Björn Kautler
September 28, 2016, 3:35 PM

I looked through the history of the file and obviously it is not a Greenshot problem.
The image was originally created with Omnigraffle and had a correct ICC Profile, then enlarged with some program I don't know yet and which introduced the faulty ICC Profile and then manipulated with Greenshot to add some text and Greenshot probably simply copied over the ICC Profile.
So obviously not the fault of Greenshot.
Sorry for the inconvenience.

Robin Krom
September 28, 2016, 3:54 PM

Copy the ICC Profile sounds exactly what Greenshot is supposed to do, and should do...
But when taking a screenshot, it should attach a profile which hopefully is correct.

Anyway, no problem! It was interesting.

Closing this, but let me know if there is anything else we can do.




Björn Kautler

Affects versions