.NET开发Bitmap GetPixel,SetPixel处理太慢的替代解决办法
编程开发
C#Bitmap.LockBits替代GetPixel替代解决办法
Bitmap处理图像 GetPixel + SetPixel大图像处理太慢的解决办法
最近做的一些事情和图像识别有关,图像处理这块就必不可免,有时甚至需要对图像每个像素进行处理,对于小图片,使用 Bitmap的方法 GetPixel + SetPixel 还能凑合用,但对于大图像处理来说这个处理效率是真的惨不忍睹。 替代方法如下
string imgPath = @"C:\Users\Administrator\Desktop\123.jpg";
System.Drawing.Bitmap BasicImageBox = new System.Drawing.Bitmap(imgPath);
Rectangle rect = new Rectangle(0, 0, BasicImageBox.Width, BasicImageBox.Height);//创建容器矩阵
System.Drawing.Imaging.BitmapData bmpData =
BasicImageBox.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite,BasicImageBox.PixelFormat);//实例化一个BitmapData
//获取首行地址
IntPtr ptr = bmpData.Scan0;
//定义数组保存位图
int bytes = Math.Abs(bmpData.Stride) * BasicImageBox.Height;
byte[] rgbValues = new byte[bytes];
//复制RGB值到数组
System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes);
byte rgb;
//for (int counter = 2; counter < rgbValues.Length; counter += 3)