C#位图从像素读取不正确的颜色

时间:2013-03-28 05:05:41

标签: c# .net bitmap pixel

我正在将一个8位的png文件读入C#.net 3.5中的位图。我正在通过像paint.net这样的任何普通程序读取图像上的特定像素,即RGB值255,255,255即白色。但是,当我通过GetPixel方法读取它或通过锁定位并访问它时,指针方式都会产生62,62,62或单字节颜色值62的结果。所以,我的问题是,为什么我得到62的值而不是255?

任何见解都会很棒:D。

1 个答案:

答案 0 :(得分:2)

听起来您的屏幕设置为16位颜色深度。这意味着每个像素由16位描述:5个红色,6个绿色,5个蓝色,每个通道值范围从0到31(2 ^ 5-1)或63(2 ^ 6-1)。您的白色像素表示为(31,63,31),可能会调整为(62,62,62)。

像Paint.Net这样的程序会自己进行位图处理,而不依赖于系统的Bitmap类,因此它们不依赖于屏幕的颜色深度。

因此,尝试将屏幕设置为32位颜色深度 - 您的像素将表示为(255,255,255)。请注意,在32位颜色深度中,通常只有24位用于颜色通道 - 最后8位是Alpha(透明度)或未使用。