Easy way to take a screen shot that's NOT color corrected?

Solution 1:

The fact that the monitor's profile gets embedded is the only way the OS can preserve the appearance of colors in your photos. If you open a photo in Photoshop, take a screen capture (let's say for now via the built-in OS tool), then open this screen shot in Photoshop (and preserve the profile in the file) and compare both side to side, then you will see that the colors are visually similar even though the numbers for each pixel is different from one to the other.

This is all normal behavior. The colors you see on your screen on a calibrated and profiled monitor is actually raw values sent by the OS to the graphics card which then "assigns" the monitor profile to the values in real time so that the colors look like they should on the monitor. This is the simple explanation of course, there is much more going on in the background.

In the color management world there is only 2 options when you wish to play around with colors and profiles: assign or convert colors. When switching from one color space to another (i.e. from RGB to CMYK), your only option is convert since the laws of physics apply here. Within the same color space, if you assign profiles (or remove them, i.e. assigning nothing) you preserve the numbers while sacrificing (to various degrees) the appearance of the colors. When converting, you preserve the appearance of the colors while sacrificing the numbers in the file.

In your case, you need to convert the screen shot to a device-independent profile like Adobe RGB, or a device-dependent but easy to play with like sRGB. You can do that in Photoshop or Preview, as long as you do convert and not assign. Removing the profile is not really helping, since the numbers will have no meaning...

Solution 2:

My Mac's screenshot colors were off and I was terribly confused. I found this question and started investigating.

Summary

Use the display color profile sRGB IEC61966-2.1 when you want to take screenshots.

How I debugged it

I created an image using GIMP that had a section of yellow RGB(255, 255, 0) and inspected it with the "Digital Color Meter" MacOS app. I thought the Chrome browser's color picker was acting kind of strange so avoided it.

Color profile sRGB IEC61966-2.1

Notice 3 things:

  • On the left, the color information of the file is not present.
  • Top right, you see the color meter show RGB(255, 255, 0). This is the color value that will end up in your screenshot file.
  • On the bottom, the monitor profile is set to sRGB IEC61966-2.1. This was the only profile that I found gave me accurate screenshots.

Compare that with the readings when I activate other color profiles. The following Color LCD profile shows RGB(255, 253, 84) on the color meter. This was the default color profile, and although it might not be obvious on your screen, on mine it made the strong yellows look whiter, more like a banana. The worst part was that I just couldn't figure out which colors were the underlying real colors by analyzing screenshots.

Color LCD profile

The Generic RGB profile shows RGB(255, 255, 11) on the color meter.

Generic RGB profile

Answering the original question

I believe the answer is no, though you could develop a method. You can't have a color profile and take non-color-corrected screenshots. Looking at the MacOS APIs for capturing the screen:

  • https://developer.apple.com/documentation/coregraphics/1454852-cgwindowlistcreateimage
  • https://developer.apple.com/documentation/avfoundation/avcapturescreeninput

There doesn't seem to be a parameter that would allow ignoring the display color correction. What you could do is implement a tool that:

  • Sets the color profile to sRGB IEC61966-2.1 by using CMSetSystemProfile
  • Takes a screenshot
  • Then sets the profile back to whatever color profile was active earlier.

Also, there might be other APIs I'm unaware of.

Here's my original test png:

colors-are-whack-no-profile.png

Image embedded color profiles complicate things

If I take a screenshot when the Color LCD profile is active, the Color LCD profile is saved in the screenshot metadata. So even when I open that screenshot later when the sRGB IEC61966-2.1 profile is active, it's only slightly color-distorted to RGB(254, 255, 0), but some apps disregard the attached color profile, like the website photopea.com which will cause dramatically incorrect colors RGB(255, 254, 84).

This investigation was really confusing. Hopefully folks that read this get slightly less confused.

screenshot with a profile in a non-color-profile app