从位图到rgb数组的最快方法?

时间:2015-05-31 10:24:56

标签: c# .net bitmap

从System.Drawing.Bitmap(任何格式,不是特定格式)到R [B R G R B R G B等形式的int []的最有效方法是什么? 我不想要实际在内存中布局的格式的位图数据(没有跨度,没有填充,没有任何东西),但我不确定最快的方式是什么从位图到我需要的东西,显然getpixel不是因为它真的很慢,所以欢迎任何建议。

其他库不是一个选项,但任何.net都是合理的游戏(包括.net 4.6 / VS 2015 RC)

编辑:3个阵列(每个通道一个)也很好,我认为这不会更快检索。

1 个答案:

答案 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);
            }