GDI+的问题

wscdm1989 wscdm1989 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

void CTestDlg::OnButton1()
{
CDC *pDC;

pDC = CDC::FromHandle(::GetDC(NULL));

int Width = GetSystemMetrics(SM_CXSCREEN);
int Height = GetSystemMetrics(SM_CYSCREEN);

CDC memDC;
memDC.CreateCompatibleDC(pDC);

CBitmap memBitMap,*oldMemBitMap;

memBitMap.CreateCompatibleBitmap(pDC, Width, Height);

oldMemBitMap = memDC.SelectObject(&memBitMap);

memDC.BitBlt(0,0,Width,Height,pDC,0,0,SRCCOPY);

DWORD dwCount = 1280*800*4;

BYTE *pBitMapBits = new BYTE[1280*800*4];

ZeroMemory(pBitMapBits,dwCount);

DWORD dwTemp = memBitMap.GetBitmapBits(dwCount,(LPVOID)pBitMapBits);

CMemFile mfBitMap(pBitMapBits,(UINT)dwCount,0);
CMemFile mfNewBitMap;

MBmpToMImage(mfBitMap,mfNewBitMap);

CBitmap bpNewBitMap;
}



BOOL CTestDlg:: MBmpToMImage(CMemFile& cbfBmp, CMemFile& cbfImage/*, CString strType*/)
{
int iBmpSize = cbfBmp.GetLength();
HGLOBAL hMemBmp = GlobalAlloc(GMEM_FIXED, iBmpSize);
if (hMemBmp == NULL) return FALSE;
IStream* pStmBmp = NULL;
CreateStreamOnHGlobal(hMemBmp, FALSE, &pStmBmp);
if (pStmBmp == NULL)
{
GlobalFree(hMemBmp);
return FALSE;
}
BYTE* pbyBmp = (BYTE *)GlobalLock(hMemBmp);
cbfBmp.SeekToBegin();
cbfBmp.Read(pbyBmp, iBmpSize);


Image imImage(pStmBmp,TRUE);
CLSID clImageClsid;
int i;
i = GetEncoderClsid(L"image/jpeg", &clImageClsid);

int j = imImage.Save(L"C:\\x.jpg",&clImageClsid);

if (1 != j)
{
MessageBox("错误2");
}
return TRUE;
}


最后save一直有错误,不知道怎么回事 ,望各位大侠解答!!!

ps:GetEncoderClsid函数没错
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
wscdm1989
图形处理/算法 19,463 成员 50,678 内容