more detailed version of my last ...

in a program that supports color management using windows ICM, an image is 
typically displayed using a method such as WM_PAINT, BeginPaint 
SetColorSpace SetDIBBits(*).  During SetDIBBits, Windows converts this 
source bitmap (based on the params to SetColorSpace) to the profile of the 
screen as it copies it to the video memory.

with a program that doesn't support ICM, Windows just simply copies from the 
source to video ram.

GetPixel reads from the video ram, and hence returns values in the profile 
of the screen (to find what profile ICM thinks the screen is, use 
GetICMProfile)

(*) for nitpickers, I didn't say BitBlt, as when using this method to 
display an image, ICM is ignored.


but ......


as Bob is I think trying to point out, reading from the sceen is not a very 
good idea.  if you want accurate color go to the source - ie the original 
file, not the result of what has been converted to be displayed.


oh, and Photoshop does not work like any other program you are likely to 
meet.  I believe it does it's own conversion using Adobe ACE instead of 
Windows ICM, and then copies that to video memory using a lower level API 
(DDI?).  just a hunch - unproven.


Louis Solomon
www.SteelBytes.com 


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Lcms-user mailing list
Lcms-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lcms-user

Reply via email to