转载图像处理 .
来源:互联网 发布:linux 网站被访问记录 编辑:程序博客网 时间:2024/06/06 04:14
1、HBITMAP 和CBitmap
HBITMAP转成CBitmap:
CBitmap* pcBmp = CBitmap::FromHandle(hBmp);
CBitmap bmp;
bmp.Attach(hbmp);
CBitmap转成HBITMAP:
HBITMAP hBmp = (HBITMAP)cBmp;
CBitmap* pBmp;
HBITMAP hBmp = (HBITMAP)(*pBmp);//(HBITMAP)是CBitmap类重载了的操作符.
2、装载图片(png格式不可以)
(1)
//FileName:路径名称
HBITMAP General::LoadALLPIC(char * FileName)
{
IPicture* p=NULL;
IStream* s=NULL;
HGLOBAL hG;
void* pp;
FILE* fp;
// Read file in memory
fp = fopen(FileName,"rb");//打开文件
if (!fp)
{
return NULL;
}
fseek(fp,0,SEEK_END);
int fs = ftell(fp);
fseek(fp,0,SEEK_SET);
hG = GlobalAlloc(GPTR,fs);
if (!hG)
{
fclose(fp);
return NULL;
}
pp = (void*)hG;
fread(pp,1,fs,fp);
fclose(fp);
CreateStreamOnHGlobal(hG,false,&s);
if (!s)
{
GlobalFree(hG);
return NULL;
}
OleLoadPicture(s,0,false,IID_IPicture,(void**)&p);
if (!p)
{
s->Release();
GlobalFree(hG);
return NULL;
}
s->Release();
GlobalFree(hG);
HBITMAP hB = 0;
p->get_Handle((unsigned int *)&hB);
// Copy the image.Necessary, because upon p's release,
// the handle is destroyed.
HBITMAP hBB = (HBITMAP)CopyImage(hB,IMAGE_BITMAP,0,0,LR_COPYRETURNORG );
p->Release();
return hBB;
}
(2)
// FileName: 待载入的图片的完整路径
//成功返回bitmap句柄,否则返回NULL
//出ico格式,其他格式图片均可
HBITMAP LoadALLPIC(char * FileName)
{
CImage img;
CString strPath;
strPath = FileName;
HRESULT ret = img.Load(strPath); // filename 是要加载的文件名(包含路径)
if( !img.IsNull())
{
HBITMAP hBitmap = img.Detach();
return hBitmap;
}
else
{
return NULL;
}
}
(3)
//装载图片(非png格式)
//由导入的图片资源ID装载
//hBitmap = LoadPic(MAKEINTRESOURCE(IDR_GIF1), _T("GIF"));//调用
HBITMAP CProtectScreenDlg::LoadPic(LPCTSTR szResourceName, LPCTSTR szResourceType)
{
ASSERT(szResourceName);
ASSERT(szResourceType);
HRSRC hPicture = FindResource(AfxGetResourceHandle(),szResourceName,szResourceType);
HGLOBAL hResData;
if (!hPicture || !(hResData = LoadResource(AfxGetResourceHandle(),hPicture)))
{
TRACE(_T("Load (resource): Error loading resource %s/n"),szResourceName);
return FALSE;
};
DWORD dwSize = SizeofResource(AfxGetResourceHandle(),hPicture);
// hResData is not the real HGLOBAL (we can't lock it)
// let's make it real
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_NODISCARD,dwSize);
if (!hGlobal)
{
TRACE(_T("Load (resource): Error allocating memory/n"));
FreeResource(hResData);
return FALSE;
};
char *pDest = reinterpret_cast<char *> (GlobalLock(hGlobal));
char *pSrc = reinterpret_cast<char *> (LockResource(hResData));
if (!pSrc || !pDest)
{
TRACE(_T("Load (resource): Error locking memory/n"));
GlobalFree(hGlobal);
FreeResource(hResData);
return FALSE;
};
CopyMemory(pDest,pSrc,dwSize);
FreeResource(hResData);
GlobalUnlock(hGlobal);
// BOOL bRetValue = Load(hGlobal,dwSize);
// GlobalFree(hGlobal);
// return bRetValue;
IPicture* p=NULL;
IStream* s=NULL;
CreateStreamOnHGlobal(hGlobal,false,&s);
if (!s)
{
GlobalFree(hResData);
return NULL;
}
OleLoadPicture(s,0,false,IID_IPicture,(void**)&p);
if (!p)
{
s->Release();
GlobalFree(hGlobal);
return NULL;
}
s->Release();
GlobalFree(hGlobal);
HBITMAP hB = 0;
p->get_Handle((unsigned int *)&hB);
// Copy the image.Necessary, because upon p's release,
// the handle is destroyed.
HBITMAP hBB = (HBITMAP)CopyImage(hB,IMAGE_BITMAP,0,0,LR_COPYRETURNORG );
p->Release();
return hBB;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hzy694358/archive/2010/04/30/5546236.aspx
- 转载图像处理
- 转载图像处理 .
- 图像处理网络资源( 转载)
- 图像处理网络资源( 转载)
- 图像处理网络资源( 转载)
- 图像处理网络资源( 转载)
- 【图像处理】Python-Image 基本的图像处理操作 【转载】
- 【转载】图像处理的就业前景
- java处理PNG图像(转载WikiMedia)
- [转载]Matlab图像处理函数:regionprops
- 标题:图像处理网络资源( 转载)
- 图像处理的网址(转载)
- (转载)图像处理(卷积)
- 各种图像处理理论实现转载
- MATLAB图像处理(包括图像类型转换)----转载
- MATLAB图像处理(包括图像类型转换)----转载
- 话题: 图像处理网络资源( 转载)很好,很值得看
- 转载:MATLAB图像处理函数汇总 (二)
- redis相关
- 缓冲区溢出攻防
- 转:DLL导出变量,函数,类 .
- 创业型公司发展路上的难言之痛 (之) 人员的管理【 2011年10月8日第一遍草稿】
- ARM问答
- 转载图像处理 .
- MSMQ相关
- 乔布斯的10大管理诫律
- 移动网站开发中常用的10段JavaScript代码
- 博客被封
- vs2005不支持中文路径解决方法
- ONSIZE函数中调整CComboBox的问题 .
- BSTR内存泄露
- Android源码及Kernel下载地址(非android.git.kernel.org)