.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)
相关推荐
免责声明 本站部分内容来源于互联网公开资源分享学习交流,若其中有侵犯到了您的权益 还请邮件联系我方删除