vb.net 怎样快速得到PictureBox1 像素的2维数组
得到PictureBox1 全部像素可以用Bitmap(PictureBox1.Image), LockBits和 Marshal.Copy 得到一维数组,用起来不方便,用for循环转化为2维数组速度太慢
有没有好方法可以得到或者转为 PictureBox1 全部像素颜色数据 Data(x,y) 的2维数组。不要循环的!1600*1200大小 获取速度要<30ms
--------------------编程问答--------------------
[DllImport("gdiplus.dll", CharSet = CharSet.Unicode, SetLastError = true, ExactSpelling = true)]
internal static extern int GdipBitmapGetPixel(HandleRef bitmap, int x, int y, out int argb);
private void button2_Click(object sender, EventArgs e)
{
long start = DateTime.Now.Ticks;
Bitmap bitmap = new Bitmap(@"C:\test.jpg");
Color[][] result = new Color[bitmap.Width][];
IntPtr nativeImage= new IntPtr();
int argb = 0;
for (int i = 0; i < bitmap.Width; i++)
{
for (int j = 0; j < bitmap.Height; j++)
{
//result[i][j] = bitmap.GetPixel(i+1, j+1);
int status = GdipBitmapGetPixel(new HandleRef(bitmap, nativeImage), i, j, out argb);
// bitmap.GetPixel(i, j);
}
}
long takeTime = DateTime.Now.Ticks - start;
MessageBox.Show(takeTime.ToString());}
使用这个api可以省去一些时间,如果有兴趣你可以开个线程试试能不能再快点 --------------------编程问答-------------------- 我要的是vb.net代码啊
Marshal.Copy 得到一维数组用CopyMemory 来转可不可以,循环太慢 --------------------编程问答-------------------- 二维数组处理起来才慢。
补充:.NET技术 , VB.NET