Bitmap图片处理的效率----BitmapData
来源:互联网 发布:在线起名软件免费版 编辑:程序博客网 时间:2024/05/01 13:33
一、在图片处理时,如果每次都是对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图片处理
- VC中程序自修改实现
- ActionBarTest、FragmentTest
- flex_探究Flex组件生命周期;
- 算法库的使用细节
- Android应用开发——*.9.png及制作
- Bitmap图片处理的效率----BitmapData
- 从头到尾彻底解析Hash表算法 .
- JAVA错误:AXIS Web Service Problem: No compiler found in your classpath! (you may need to add ‘tools.ja
- 在OSCOMMERCE2.3.1中安装中文语言包的方法
- 对象的强、软、弱和虚引用
- yii 模块
- minigui 贪食蛇
- Oracle table size
- 如何完全卸载oracle和删除oracle在注册表中的注册信息