在 C# 中从图像中获取 RGB 数组
我目前正在编写一个用 Java 编写的小程序的 C# 实现。
我在 Java 应用程序中使用了 BufferedImage.getRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize) 函数。但我在 C# 中找不到这个版本,而且我不知道如何手动编写它。
I'm currently writing a C# implementation of a little program which I have written in Java.
I had used BufferedImage.getRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize)
function in my Java app. But I couldn't exactly find a version of this in C# and I am not sure how to write it manually.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
.NET Framework 中没有与此方法直接等效的方法。但是,如果您的图像是 System.Drawing.Bitmap,则可以调用 LockBits 方法,这将返回包含第一条扫描线的地址的 BitmapData 结构。然后,您可以使用它来创建与 API 兼容的包装器。我假设您使用的是 C# 3.5 或更高版本,因此我使用的是扩展方法 - 如果您使用的是旧版本,请通过从位图参数中删除“this”将其更改为常规方法
:现在可以这样调用:
希望这有帮助,欢迎使用 .NET!
There's not a direct equivalent in the .NET Framework to this method. However, if your image is a System.Drawing.Bitmap, you can call the LockBits method, and this will return a BitmapData structure that contains the address of the first scanline. You can then use it to create what should be an API-compatible wrapper. I'm assuming you're using C# 3.5 or greater, so I'm using an extension method - if you're using an older flavor, change this to a regular method by dropping the 'this' from the Bitmap argument:
This wrapper can now be called like this:
Hope this helps, and welcome to .NET!
您可以使用 Bitmap.LockBits 直接访问位图中的像素。这是一个示例实现,它从传递的位图中返回一条扫描线作为 int[]:
You'd use Bitmap.LockBits to get direct access to the pixels in a bitmap. Here's a sample implementation, it returns one scanline from the passed bitmap as an int[]:
我认为最接近的是 Bitmap.GetPixel(x,y) ,它在某个点返回单个像素颜色。
为了模拟java函数,您需要编写一些帮助程序。
I think the closest one is
Bitmap.GetPixel(x,y)
that return a single pixel color at a point.In order to simulate the java function, you will need to write some helper.
您可能需要检查
另请检查 < a href="https://stackoverflow.com/questions/392324/converting-an-array-of-pixels-to-an-image-in-c">在 C# 中将像素数组转换为图像。
You may need to check
Also check Converting an array of Pixels to an image in C#.
这取决于你需要多快地完成它。
Bitmap
有GetPixel()
方法,可以很好地处理像素。如果您需要进行快速图像处理,则需要使用
LockBits
,您可以在此处找到示例。It depends how fast you need to do it.
Bitmap
hasGetPixel()
method which works fine for a pixel.If you need to do fast image processing you need to use
LockBits
which you can find a sample here.