C#位图从像素中读取不正确的颜色
Posted
技术标签:
【中文标题】C#位图从像素中读取不正确的颜色【英文标题】:C# Bitmap Reading incorrect colour from pixel 【发布时间】:2013-03-18 11:10:00 【问题描述】:我正在将 8 位 png 文件读入 C# .net 3.5 中的位图中。当通过诸如paint.net之类的任何普通程序读取时,我的目标是图像上的一个特定像素,该像素是RGB值255,255,255,即白色。但是,当我通过 GetPixel 方法或通过锁定位读取它并以指针方式访问它时,都会产生 62、62、62 或单字节颜色值 62 的结果。所以,我的问题是,为什么我得到 62 而不是 255 的值?
任何见解都会很棒:D。
【问题讨论】:
一些代码会有所帮助... 你在加载Bitmap的时候指定了正确的PixelFormat吗? @SimonWhitehead:我试图编写它以便不需要代码,我认为这是我对它背后的理论的理解而不是代码本身的问题。 【参考方案1】:听起来您的屏幕设置为 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(透明度)或未使用。
【讨论】:
谢谢乔纳森,这已经为我解决了。然而,这确实带来了一系列新问题,但我会看看我会怎么做。以上是关于C#位图从像素中读取不正确的颜色的主要内容,如果未能解决你的问题,请参考以下文章