在 C# 中将 24 位 BMP 转换为单色位
本文关键字:转换 单色位 BMP 中将 | 更新日期: 2023-09-27 18:35:19
我将如何获取24位的BMP并将其转换为单色位图? 我不担心失去颜色等,也不想使用其他文件格式。
基本上有两种方法。可以使用互操作方法读取原始 BMP 数据,并为单色位图写入原始 BMP 数据。有一些可谷歌的函数可以做到这一点。
或者,更好的是,您可以使用ImageMagickObject使用随机抖动来转换图像。
做第二个。
如果你做第一个,你仍然应该使用随机抖动,但你必须手动实现它。
编辑:您问"以下RGB值变成了什么"...答案是他们成为你想要他们成为的样子。你决定。
显而易见的选择是使用严格的阈值,其中小于 X 的任何值都变为黑色,任何大于 X 的阈值都变为白色,或者您可以使用随机抖动。选择两个阈值,黑色阈值bt
和白色阈值wt
,以便0 < bt < wt < 255
。然后为每个点选择一个介于 0.0 之间的随机数q
。和 1.0。比较像素亮度((r+g+b)/3
)与(q*(wt-bt)+bt)
。如果它大于或相等,则为白色,如果小于,则为黑色。这将为您提供一个很好的抖动灰度。在大多数情况下,31 和 224 是 bt 和 wt 的良好值,但对于摄影图像,0 和 255 可能更好。