我正在将 8 位 png 文件读入 C# .net 3.5 中的位图中。当通过诸如paint.net之类的任何普通程序读取时,我的目标是图像上的一个特定像素,该像素是RGB值255,255,255,即白色。但是,当我通过 GetPixel 方法或通过锁定位读取它并以指针方式访问它时,都会产生 62、62、62 或单字节颜色值 62 的结果。所以,我的问题是,为什么我得到 62 而不是 255 的值?
任何见解都会很棒:D。
听起来您的屏幕设置为 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(透明度)或未使用。