CImage,MFC,图像处理
来源:互联网 发布:linux find 模糊查询 编辑:程序博客网 时间:2024/04/30 19:26
参考: http://www.cnblogs.com/afarmer/archive/2012/03/31/2427273.html
Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源
CImage支持的图片格式有很多,像通常用的jpg, png, bmp,gif等都支持的不错。(CImage类基于GDI+,从VC.NET起引进,VC 6.0中没有。)
按照我们常用的图片处理需求,一般是:图片加载、图片指定到控件、图片绘制、图片修改、图片转换、(图片创建)
1. 图片加载 /打开
CImage加载/打开图片加载的方法有三个
a. 指定路径文件名加载
CImage::load方法
可以根据load返回的结果来判定是否加载图片成功。
b. 指定resourceid加载,这种情况是把图片导入到了resource中,使用resource中定义的id加载
CImage::LoadFromResource
c. 绑定一个Bitmap,使用Attach方法,绑定一个Bitmap,这样就可以使用Cimage的许多方法了
CImage::Attach
使用这种方法记载的图形可以是DIB也或者是DDB图形,取决于绑定的HBITMAP是否是DIB图形,可以给予IsDIBSection判定(DIB: 设备无关图形 DDB:设备有关图形)
2. 图片指定到一个控件上
通常MFC内部控件使用到的是HBITMAP或CBitmap结构
我们打开图片结束后,可以使用
image.Detach() 返回HBITMAP
CDC::FromHandle(image.Detach()) 返回CBitamp
3. 图片绘制
图片绘制到屏幕上,就需要相关的绘图设备了,需要和设备DC相关,所以几个绘图函数的第一个参数都是CDC*
常用绘图函数:
CImage::Draw 绘制
CImage::StretchBlt 拉伸 (注意调用这个函数之前设置拉伸模式SetStretchBltMode)
CImage::AlphaBlend 混色
Cimage::TransparentBlt 透明绘制
CImage::MaskBlt 掩码绘制 Combines the color data for the source and destination bitmaps using the specified mask and raster operation.
CImage::PlgBlt 平行四边形绘制 Performs a bit-block transfer from a rectangle in a source device context into a parallelogram in a destination device context.
4. 图片修改
图片内容修改的方法有几种,
一种单个pixel修改,使用
Cimage::SetPixelRGB
一种是批量修改,获取所有Pixel像素信息,批量的进行处理
CImage::GetBits获取到图片内存点的位置
使用这种方法的时候,需要考虑图形的结构,使用CImage::GetBPP获取每个像素点占几位,还需要使用CImage::GetPitch获取一行位的个数,根据GetPitch的正负值来判定GetBits获取到的head是首行的还是尾行的。
修改的话,就可以直接修改了,例如24位的数据,通常是BGR这种格式,每个Pixel像素第一个字节为Blue,第二个字节代表Green,第三个字节代表Red
5. 图片格式转换/保存
Cimage类提供了保存为其他格式的函数:
CImage::Save支持的参数有
The file type to save the image as. Can be one of the following:
ImageFormatBMP An uncompressed bitmap image.
ImageFormatPNG A Portable Network Graphic (PNG) compressed image.
ImageFormatJPEG A JPEG compressed image.
ImageFormatGIF A GIF compressed image.
6. 图片创建
除了通过Load方法创建一个图片之外,我们还可以通过Create方法创建一个图片,然后使用图片修改的方法来定义各个Pixel的信息
Cimage::Create
CImage::CreateEx
创建出的图片,使用4. 图片修改中的方法进行处理,然后可以使用Save方法保存起来
- CImage,MFC,图像处理
- MFC CImage 读取图像 像素
- 使用CImage进行图像处理
- MFC的CImage图形处理
- MFC:CImage显示OpenCV:Mat矩阵图像
- MFC中显示图像的类CImage
- MFC:CImage显示OpenCV:Mat矩阵图像
- MFC:CImage显示OpenCV:Mat矩阵图像
- MFC:CImage显示OpenCV:Mat矩阵图像
- MFC中显示图像的类CImage
- MFC:CImage显示OpenCV:Mat矩阵图像
- MFC和ATL共享的新类CImage为图像处理提供了许多相应的处理方法
- 【图像处理】CImage类的简单应用
- MFC中CImage的透明处理
- MFC中CImage的透明处理
- 将OpenCV:Mat矩阵图像转换为MFC:CImage图像
- 在MFC程序中使用CImage类绘制半透明图像
- MFC:利用CImage动态加载图像,无需Picture Control控件
- 腾讯云基本配置(javaweb)ubuntu版本
- 超参数优化
- 解决studio打release包不打印log问题
- busybox启动默认以root用户登陆运行却没有root权限
- 那些亮瞎你的奇葩癖好!别再说程序猿不会玩了
- CImage,MFC,图像处理
- 项目docker容器化部署步骤
- kernel编译生成Image zImage uImage的区别
- JAVA HttpURLConnection 获取网页内容
- 归并排序
- [iOS 通过手势获取触发点 CGPoint ]locationInView / translationInView
- 配置从其它服务器通过fs_cli访问freeswitch
- Redis 3.2.8 集群模式+Sentinel多Master部署
- 模型评估