使用指针把图片转换成二维数组
2011-06-22 15:02
281 查看
/// <summary> /// 使用指针扫描图片,返回存放像素值的二维数组(高,宽) /// </summary> /// <param name="bmp">预处理图片</param> /// <param name="grizzly">是否为灰色图片</param> /// <returns>返回存放像素值的二维数组(高,宽)</returns> public string[,] LeveScan(Bitmap bmp, bool grizzly) { //创建图像 (防止LockBits方法出错,多加了一步) Bitmap bmNew = new Bitmap(bmp.Width, bmp.Height, PixelFormat.Format24bppRgb); Graphics g = Graphics.FromImage(bmNew); g.DrawImage(bmp, new Point(0, 0)); g.Dispose(); string[,] temp = new string[bmp.Height, bmp.Width]; //获取图像的BitmapData对像 BitmapData data = bmNew.LockBits(new Rectangle(0, 0, bmNew.Width, bmNew.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); //循环处理 unsafe { byte* ptr = (byte*)(data.Scan0); for (int i = 0; i < data.Height; i++) { for (int j = 0; j < data.Width; j++) { if (grizzly) { temp[i, j] = ptr[2].ToString(); //红 } else { temp[i, j] = ptr[2].ToString() + "-"; //红 temp[i, j] += ptr[1].ToString() + "-"; //绿 temp[i, j] += ptr[0].ToString(); //蓝 } ptr += 3; } ptr += data.Stride - data.Width * 3; } } bmNew.UnlockBits(data); return temp; }
相关文章推荐
- 二维数组和双重指针的转换及使用
- 使用ffmpeg来将mp4视频转换成gif格式图片
- 使用GDI+在内存中转换图片类型
- 使用webBrowse把网页word等转换成图片
- Android系统移植与调试之------->如何使用PhotoShop转换24位的bmp图片为16位bmp图片
- 在ios中使用opencv将彩色图片转换成为灰度图,uiimageview无法显示问题
- 二维数组指针的使用
- C#中使用指针转换数据类型[C#/unsafe]
- windows mobile平台中使用C#将byte数组转换为Format24bppRgb格式的图片
- Webpack4教程 - 第二部分,使用loader处理scss,图片以及转换JS
- qt中使用opencv处理图片 QImage 和 IplImage 相互之间转换问题
- 使用GDI+在内存中转换图片类型
- 使用指针从函数返回一个二维数组
- 二级指针与二维数组使用误区
- 【使用Itext处理PDF文档(新建PDF文件、修改PDF文件、PDF中插入图片、将PDF文件转换为图片)】
- qt中使用opencv处理图片 QImage 和 IplImage 相互之间转换问题
- VC中使用GDI+在内存转换图片类型
- 使用的是html5的canvas将文字转换成图片
- 倍福TwinCAT(贝福Beckhoff)基础教程2.2 TwinCAT常见类型使用和转换_指针
- OpenCV学习笔记1:使用Camera获取图像,并用Canny转换成边缘图,并支持鼠标点击保存图片