VS2010 用CxImage读入各种图片格式后在内存中转换为HBITMAP位图

基于cximage实现的图片格式和位深度转换 基于cximage实现的图片格式和位深度转换,基于cximage实现的图片格式和位深度转换 立即下载

最近自学游戏引擎设计,希望将各种图片格式读入内存后转为HBITMAP处理,四处搜寻无果,最终参考以下两篇博文自己搞定之

http://blog.csdn.net/wu_xiangwei/article/details/5096529

http://www.cnblogs.com/xiangism/archive/2012/10/16/2725692.html


废话不多说,先上关键代码

//将CxImage转为位图
HBITMAP Draw::ChangeCxImageToBMP(HDC hDC,CxImage* cximage)
{
	//创建HBITMAP
	HBITMAP BMP=CreateCompatibleBitmap(hDC,cximage->GetWidth(),cximage->GetHeight());
	BITMAP bm;	
	GetObject(BMP,sizeof(BITMAP),&bm);
	int pb=bm.bmBitsPixel/8;	//获取位图位数
	int BytesPerLineOut = (bm.bmWidth*pb + 3) / 4 * 4;	//计算每行像素的数据长度
	BYTE *pxd = new unsigned char[bm.bmHeight*BytesPerLineOut]; //声明暂存数组

	if(cximage->GetBpp()>=16)
	{
		//直接获取像素数据
		int pbx=cximage->GetBpp()/8;	//获取CxImage图片的位数
		int BytesPerLine = (bm.bmWidth*pbx + 3) / 4 * 4;	//计算CxImage每行像素的数据长度
		BYTE *pDib = cximage->GetBits();	//获取CxImage图片的像素数据

		for (int i = 0; i < bm.bmHeight; i++) 
		{ 
			for (int j = 0; j < b
【代码】VS2010CxImage读入各种图片格式后在内存转换HBITMAP位图Demo VS2010CxImage读入各种图片格式后在内存转换HBITMAP位图Demo 立即下载

相关推荐

CxImage 实现各种图片格式的转化

轻松地实现各种图片格式的转化,基本的图像处理功能, 在其基础上可以做简单的二次开发,以静态链接库的形式提供。

VS2010 创建位图之后 编译出错问题

VS2010 一、显示“bitmap1”未标识符 将代码bitmap.LoadBitmap(bitmap1.bmp)或bitmap.LoadBitmap(bitmap1.bmp)修改为bitmap.LoadBitmap(IDB_BITMAP1); 二、报错error RC2135: file not found: bitmap1.bmp。 在“”项目名称“”.rc文件下找到报错位置IDB_BITM...

qq_38646581的博客 611

Cximage<---->Mat 、Cximage<---->lplImage 以及 lplImage<----->Mat的转换、像素位深度

1.传统的lplImage格式也可直接转换为Mat格式 IplImage* img = cvLoadImage("greatwave.png", 1); Mat mtx(img); // convert IplImage* -> Mat 2、如果想将新版本的Mat格式转换为老版本,则需要如下调用: Mat I; IplImage* pI = &I.operator I

liulina603的专栏 4223

VS2010中创建C#的位图(BitMap)的方法与步骤

C#位图与图标的制作方法:1.方法1:右击项目创建位图: ①右击项目名称,从弹出的右键菜单中,选择“添加(D)”,选择“资源字典(R)…; ②在弹出的窗口中找到位图文件,并在下面添加位图名称,点击添加完成位图的添加。 2.方法2:右击文件创建位图: ①右击文件Pics,从弹出的右键菜单中,选择“添加(D)”,选择“资源字典(R)…; ②在弹出的窗口中找到位图文件,并在下面添加位图名称,点击

United2016的博客 1万+

数组转换为Gdiplus::Bitmap

首先在某一个位置初始化对应的数组: BOOL CCPUJuliaSetDlg::OnInitDialog() {       CDialogEx::OnInitDialog();    …………..    //为对话框添加关闭按钮       LONG lStyle= GetWindowLong(this->m_hWnd, GWL_STYLE);       lStyle |=WS_

hurricanecqj的博客 2800

使用开源CxImage类库

一。CxImage类库简介这只是翻译了CxImage开源项目主页上的部分简介及简单使用。CxImage类库是一 个优秀的图像操作类库。它可以快捷地存取、显示、转换各种图像。有的读者可能说,有那么多优秀的图形库,如OpenIL,FreeImage, PaintLib等等,它们可谓是功能强大,齐全,没必要用其它的类库。但我要说,这些类库基本上没有免费的,使用这些类库,你要被这样那样的许可协议所

ywywcy的专栏 1490

C++/MFC-GDI绘图之CBitmap位图

一、显示资源里的位图 ①载入图片:loadbitmap ②创建设备上下文:CreateCompatibleDC ③替换设备环境位图:SelectObject ④复制位图:bitblt ⑤释放对象 ⑥释放设备上下文 示例代码: { // TODO: 在此添加控件通知处理程序代码 CBitmap mybitmap; mybitmap.LoadBitmap(IDB_BITMAP3);

学前班的博客 8004

VS2010 MFC显示位图

void CopenimageView::OnDraw(CDC* pDC) { CBitmap bitmap; CDC dcMemory; bitmap.LoadBitmap(IDB_BITMAP2); //IDB_BIRMAP2是你加载的位图资源 dcMemory.CreateCompatibleDC(pDC); dcMemory.SelectOb

hnwxfyf的专栏 1300

CxImage使用方法经验

CxImage使用方法经验 CxImage是不错的图像处理类,下载下来后,发现太复杂,详细说明的文档也没有,对我等VC新手来说只能慢慢摸索了。个人总结经验如下:(一)安装使用前要先打开CxImgLib.dsw,进行编辑成LIB库文件。随后的使用方法如下:一、最复杂的方法,功能最好(占空间大):"1.将以下几个目录拷贝到与“我新建的项目目录”同一级目录

henry19850318的专栏 838

cximage保存图片0字节错误问题以及解决。

这几天自己在弄一个图片合并的问题,发现一只出现失败,达不到自己想要的效果。后来在网上借鉴了一部分代码,发现最终保存下来的合并的图片大小为0字节。 CxImage img1,img2,img3; int h1,w1,h2,w2,h3,w3,bpp; img1.Load("1.jpg",CXIMAGE_FORMAT_JPG); img2.Load("2.jpg",CXIMA...

Alan_Program的博客 1795

关于HBITMAP,CBITMAP,BITMAP的转换以及图像显示的一点归纳

OK,在上一篇文章中我提到了VC6和VS的差别,在VC6中我们只能依赖于CBITMAP HBITMAP以及BITMAP之间的转化关系,而在VS中,我们用CIMAGE类就可以全部搞定,那么究竟这三个类之间的转化关系是什么样的呢?图像显示的时候该怎么使用呢,别着急,听我慢慢道来。一、区分概念:首先:BITMAP是C++中定义的位图结构体HBITMAP是Windows中使用的位图句柄CBitmap是MF...

m0_37702666的博客 3097

十全大补:CxImage图像处理类库

 十全大补:CxImage图像处理类库                                                                                                                                   转载IT168         CxImage是一个可以用于MFC 的C++图像处理类库

深之JohnChen的专栏 7980

使用CxImage进行图形和格式转换(CBitmap to jpg or png or gif or bmp)

<br />Introduction<br />CxImage is a C++ class to manage almost any kind of images. It can load, save, display, transform images in a very simple and fast way. <br />Why another image library? Around there are many good libraries (OpenIL, FreeImage, PaintL

天道酬勤 3267

获取HBITMAP,导出带透明度的png图片

// 从HDC 获取 HBitmap STDMETHOD(ExportHBitmap)(ULONG_PTR* o_hBitmap) { HBITMAP hBmp = NULL; HANDLE hOld; HDC hMemDC = NULL; long lRectPara[4]; GetWndRect(lRectPara); long nWidth = lRectPara[2]; long nHeight = lRectPara[3]; hMemDC = CreateC

qq_32563489的博客 1080

HBITMAP另存为JPEG/PNG/TIFF/GIF/BMP

BOOL GetEncoderClsid(const WCHAR* format, CLSID* pClsid) { UINT num = 0; UINT size = 0; GetImageEncodersSize(&amp;num, &amp;size); if(size == 0) r...

yjz1409276的专栏 4254

如何将bitmap 压缩/转换为jpg/png格式的图片存贮

File myCaptureFile = new File( + fileName + ".jpg"); BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(myCaptureFile)); [color=Red]img[/color].compress(...

baobaoupup 1064

CImage 获取HBITMAP句柄与HBITMAP转IplImage

CImage 获取HBITMAP句柄: #include char *fImgPath=" img path"; CString fimgp=fImgPath; CImage fcimage;fcimage.Load(fimgp); HBITMAP fhandle = fcimage.Detach();HBITMAP转IplImage IplImage* hBitmapToIpl(HBIT

luzif的专栏 5547
下一篇: C++ 在多线程中使用mciSendString播放音乐 上篇
daeba
博客等级 码龄12年 3粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值