Image processing 8bpp图像太暗
我为一个图像创建了一个查看器,该图像最初是一个索引的8bpp 256色文件。我首先读取它的调色板,然后是图像字节本身,它们引用256调色板中的一种颜色 利用这些数据,我创建了一个位图(32bpp,但也尝试了各种16bpp),并用SetPixel为每个像素赋值 结果是正确的图像,但颜色太暗Image processing 8bpp图像太暗,image-processing,bitmap,Image Processing,Bitmap,我为一个图像创建了一个查看器,该图像最初是一个索引的8bpp 256色文件。我首先读取它的调色板,然后是图像字节本身,它们引用256调色板中的一种颜色 利用这些数据,我创建了一个位图(32bpp,但也尝试了各种16bpp),并用SetPixel为每个像素赋值 结果是正确的图像,但颜色太暗 你知道为什么会这样吗?我想问题在于像素格式,但我如何解决它?听起来您可能无法将原始颜色的字节值缩放到新的存储大小。在16/32位环境中直接使用8位值确实会使图像非常暗,因为它们的值最多为255,而16或32位的
你知道为什么会这样吗?我想问题在于像素格式,但我如何解决它?听起来您可能无法将原始颜色的字节值缩放到新的存储大小。在16/32位环境中直接使用8位值确实会使图像非常暗,因为它们的值最多为255,而16或32位的值可能会大得多。听起来您可能无法将原始颜色的字节值缩放到新的存储大小。在16/32位环境中直接使用8位值确实会使图像非常暗,因为它们的值最多为255,而16或32位的值可能要大得多。pallete颜色可能假设伽马曲线?我不会这么说,因为我正在将Pascal程序转换为.NET。原始程序以正确的颜色显示图像,无需进一步调整。pallete颜色可能假设为gamma曲线?我不会这么说,因为我正在将Pascal程序转换为.NET。原始程序以正确的颜色显示图像,没有进一步的调整,因为使用16bpp格式会稍微亮一些。如何缩放它们?即使如此,使用SetPixel(int、int、Color)时,R、G和B值最多只能达到255。否则我会出现运行时错误。解决了它。正如有人向我指出的,问题出在VGA调色板上,每种颜色最多有18位(每通道6位)。所以我乘以4,得到了一个很好的近似值。谢谢警察局。无法将此作为自我回答发布。。。将其作为评论发布。这是有道理的,因为使用16bpp格式稍微好一点。如何缩放它们?即使如此,使用SetPixel(int、int、Color)时,R、G和B值最多只能达到255。否则我会出现运行时错误。解决了它。正如有人向我指出的,问题出在VGA调色板上,每种颜色最多有18位(每通道6位)。所以我乘以4,得到了一个很好的近似值。谢谢警察局。无法将此作为自我回答发布。。。将其作为评论发布。