我在IImageProvider界面后面有一个图像源,我正在尝试访问它的像素。
IImageProvider中有一个方法:imageProvider.GetBitmapAsync(bitmapToFill)
如何访问IImageProvider背后的源的各个像素?
答案 0 :(得分:3)
你试过这个吗?
var bitmap = await imageSource.GetBitmapAsync(null, OutputOption.PreserveAspectRatio);
var pixels = bitmap.Buffers[0];
for (uint i = 0; i < pixels.Buffer.Length; i++)
{
var val = pixels.Buffer.GetByte(i);
}
等等
imageSource是你的IImageProvider,我用BufferImageSource测试它。
答案 1 :(得分:2)
这是一个稍微有效的选择。
在您自己的(空)像素的.NET数组上创建一个位图,然后使用GetBitmapAsync来填充它。渲染完成后,您可以在传递的原始数组中找到结果。
byte[] myPixels = new byte[correctSize]; // You can use a ColorModeDescriptor to calculate the size in bytes here.
using(var wrapperBitmap = new Bitmap(widthAndHeight, colorMode, pitch, myPixels.AsBuffer()))
{
await interestingImage.GetBitmapAsync(wrapperBitmap, OutputOption.PreserveAspectRatio);
}
// and use myPixels here.