从图像创建 1bpp 蒙版
如何在 C# 中使用 GDI 从图像创建每像素 1 位的掩码? 我尝试创建蒙版的图像保存在 System.Drawing.Graphics 对象中。
我见过在循环中使用 Get/SetPixel 的示例,速度太慢。 我感兴趣的方法是仅使用 BitBlits 的方法,例如 this。 我只是无法让它在 C# 中工作,非常感谢任何帮助。
How do you create a 1 bit per pixel mask from an image using GDI in C#? The image I am trying to create the mask from is held in a System.Drawing.Graphics object.
I have seen examples that use Get/SetPixel in a loop, which are too slow. The method that interests me is one that uses only BitBlits, like this. I just can't get it to work in C#, any help is much appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
试试这个:
...
GetPixel() 很慢,您可以使用不安全的字节*来加快速度。
Try this:
...
GetPixel() is slow, you can speed it up with an unsafe byte*.
在 Win32 C API 中,创建单色掩码的过程很简单。
为了获得加分,通常需要将蒙版位图传输回源位图(使用 SRC_AND)以将那里的蒙版颜色归零。
In the Win32 C API the process to create a mono mask is simple.
For bonus points its then usually desirable to blit the mask back onto the source bitmap (using SRC_AND) to zero out the mask color there.
你是说LockBits吗? Bob Powell 在此处了解了 LockBits ; 这应该提供对 RGB 值的访问,以执行您需要的操作。 您可能还想看看 ColorMatrix,像这样。
Do you mean LockBits? Bob Powell has an overview of LockBits here; this should provide access to the RGB values, to do what you need. You might also want to look at ColorMatrix, like so.