Bitmap图片处理的效率----BitmapData
来源:互联网 发布:python与matlab 编辑:程序博客网 时间:2024/05/01 06:54
一、在图片处理时,如果每次都是对Bitmap的对象进行直接处理,效率不高。
二、改进: 在每次处理图像之前,对其进行lock,生成对应的BitmapData对象。
( 注:
BitmapData类是将Bitmap里面的像素映射成为一个一位数组,Bitmap中一个像素为4bytes,分别对应为ARGB,而BitmapData中4bytes中颜色的排列顺序为BGRA,BitmapData属性如下:
①、Scan0 是该一维数组对应的首地址,采用BYTE* m_p=(BYTE*)srcBitmapData.Scan0;就可以按颜色对一维数组中的像素进行访问。例如:*m_p为蓝色,*(m_p+1)为绿色 ;
②、srcBitmapData.Width, srcBitmapData.Height, 分别为原来二维数组中的宽、高;
③、srcBitmapData.Stride为一行的字节数,且为4的整数倍,如果不足末尾会不成4的倍数。故对Bitmap中的[i][j]处的蓝色可以这样访问(j*srcBitmapData.Stride)+4*i; )
三、内存释放问题: 在函数结束前要对产生的Bitmap(包括clone的)进行delete
例如: if (image) { delete image; image=NULL; }
四、附:
Rect rc(0, 0, m_pOrignImage->GetWidth(), m_pOrignImage->GetHeight());
BitmapData srcBitmapData;m_pOrignImage->LockBits(&rc, Gdiplus::ImageLockModeRead | Gdiplus::ImageLockModeWrite, PixelFormat32bppARGB, &srcBitmapData);//锁定图像
m_pOrignImage->UnlockBits(&srcBitmapData);//记得释放图像,只有释放了才能对m_pOrignImage进行操作
- Bitmap图片处理的效率----BitmapData
- Bitmap图片处理的效率----BitmapData
- Bitmap图片的处理
- bitmap & bitmapdata
- Flex中如何利用Bitmap和BitmapData类复制图片到一个TileList控件的例子
- (转)C#进行图像处理的几种方法(bitmap,bitmapData,IntPtr)
- C#进行图像处理的几种方法(bitmap,bitmapData,IntPtr)
- Android Bitmap图片的处理
- Flex 利用bitmap和bitmapData改变图片为黑白画
- Bitmap与BitmapData
- Bitmap与BitmapData整理
- Bitmap 和 BitmapData 类
- Android之图片Bitmap的特殊处理
- Android对图片的处理(Bitmap)
- 理解Loader、Bitmap和BitmapData对象之间的关系
- 使用BitmapData实现图像的高速处理
- Bitmap图片处理成圆角
- Bitmap图片处理
- request 和session
- iOS RunLoop
- TreeList的实现方法
- 2016 Android面试题(一)
- jmeter压力测试
- Bitmap图片处理的效率----BitmapData
- Android随笔-06.02.2016
- 关于C++中的继承和重载的区别
- jquery强化教程2016第1节-编写第一个JQuery程序
- 一个简单的自定义通信协议(socket)
- 浅谈矩阵分解在推荐系统中的应用
- 《Java程序员上班那点事》读后记录
- matlab 简单的人脸识别
- 从数据库中选取前5个最大值,并计算均值