从System.Drawing.Bitmap(任何格式,不是特定格式)到R [B R G R B R G B等形式的int []的最有效方法是什么? 我不想要实际在内存中布局的格式的位图数据(没有跨度,没有填充,没有任何东西),但我不确定最快的方式是什么从位图到我需要的东西,显然getpixel不是因为它真的很慢,所以欢迎任何建议。
其他库不是一个选项,但任何.net都是合理的游戏(包括.net 4.6 / VS 2015 RC)
编辑:3个阵列(每个通道一个)也很好,我认为这不会更快检索。
答案 0 :(得分:0)
也许这段代码可以帮助您:
unsafe public SimpleRGBImage(Bitmap bmp)
{
data = new byte[bmp.Width, bmp.Height, 3];
BitmapData bmpData = new BitmapData();
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
bmpData = bmp.LockBits(rect,
ImageLockMode.ReadOnly,
PixelFormat.Format24bppRgb);
byte* Scan0 = (byte*)bmpData.Scan0.ToPointer();
int size = bmp.Width * bmp.Height * 3;
for (int i=0; i<size-1; i++)
{
data[i % bmp.Width, i % bmp.Height, i % 3] = *(Scan0++);
}
bmp.UnlockBits(bmpData);
}