如何获取24位BMP并将其转换为单色位图?我不担心丢失颜色等,我不想使用其他文件格式。
答案 0 :(得分:3)
基本上有两种方法。您可以使用Interop方法读取原始BMP数据并为monchrome位图写入原始BMP数据。有googlable函数可以做到这一点。
或者,更好的是,您可以使用ImageMagickObject使用stoichastic抖动转换图像。
做第二个。
如果你做第一个,你仍然应该使用stocichastic dither,但你必须手动实现它。
编辑:你问“以下RGB值变成了什么”......答案是它们成为你想要的变成了什么。你决定。
显而易见的选择是使用严格的阈值,其中任何小于X的东西变成黑色,任何更多变成白色,或者你可以使用stoichastic抖动。选择两个阈值,黑色阈值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可能更好。