社区
网络编程
帖子详情
如何将URLDownloadToFile获取的网页保存成图片!
flybox0384
2006-12-10 09:55:22
URLDownloadToFile获取的网页如何才能保存成图片,或者其他方法!(MFC)
...全文
896
7
打赏
收藏
如何将URLDownloadToFile获取的网页保存成图片!
URLDownloadToFile获取的网页如何才能保存成图片,或者其他方法!(MFC)
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
蒋晟
2006-12-11
打赏
举报
回复
You need to wait until DocumentComplete
http://www.codeproject.com/shell/AutomateShellWindow.asp
flybox0384
2006-12-11
打赏
举报
回复
先谢谢两位,但是还有问题!
pWebBrowser->put_Visible(VARIANT_TRUE);
pWebBrowser->Navigate(bstrURL,&vtFlags, &vtEmpty, &vtEmpty, &vtEmpty);
::VariantClear(&vtFlags);
::VariantClear(&vtEmpty);
SysFreeString(bstrURL); // 用完释放
SaveBitmapToFileA(GetIEAsBitmap(pWebBrowser,800,600),GetFilePath());
HBITMAP CMainFrame::GetIEAsBitmap(IWebBrowser2* piWB, INT nWidth, INT nHeight)
{
HBITMAP hbmRet = NULL;
RECT rc;
if (piWB && SetRect(&rc, 0, 0, nWidth, nHeight) && !IsRectEmpty(&rc))
{
if (HDC hDC = ::GetDC(NULL))
{
if (HDC hdcMem = CreateCompatibleDC(hDC))
{
if (HBITMAP hbm = CreateCompatibleBitmap(hDC, nWidth, nHeight))
{
BOOL bValid = FALSE;
if (INT nSaved = SaveDC(hdcMem))
{
if (SelectObject(hdcMem, hbm))
{
bValid = (SUCCEEDED(OleDraw(
piWB, DVASPECT_CONTENT, hdcMem, &rc)));
}
RestoreDC(hdcMem, nSaved);
}
if (!bValid)
DeleteObject(hbm);
else
hbmRet = hbm;
}
DeleteDC(hdcMem);
}
::ReleaseDC(NULL, hDC);
}
}
return hbmRet;
}
int CMainFrame::SaveBitmapToFileA(HBITMAP hBitmap,CString FileName)
{
HDC hDC;
WORD wBitCount;
DWORD dwPaletteSize = 0,dwBmBitsSize,dwDIBSize, dwWritten;
BITMAPFILEHEADER bmfHdr;
BITMAPINFOHEADER bi;
LPBITMAPINFOHEADER lpbi;
HANDLE fh,hDib, hPal,hOldPal=NULL;
wBitCount = 24;
if(wBitCount <= 8)
{
dwPaletteSize =(1 << wBitCount) *sizeof(RGBQUAD);
}
bi.biSize = sizeof(BITMAPINFOHEADER);
bi.biWidth= 1024;
bi.biHeight = 768;
bi.biPlanes = 1;
bi.biBitCount = wBitCount;
bi.biCompression= BI_RGB;
bi.biSizeImage= 0;
bi.biXPelsPerMeter = 0;
bi.biYPelsPerMeter = 0;
bi.biClrUsed= 0;
bi.biClrImportant= 0;
dwBmBitsSize = ((1024 * wBitCount+31)/24)* 3 * 768 ;
hDib = GlobalAlloc(GHND,dwBmBitsSize+dwPaletteSize+sizeof(BITMAPINFOHEADER));
lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDib);
*lpbi = bi;
hPal = GetStockObject(DEFAULT_PALETTE);
if (hPal)
{
hDC = ::GetDC(NULL);
hOldPal = ::SelectPalette(hDC, (HPALETTE)hPal, FALSE);
RealizePalette(hDC);
}
GetDIBits(hDC, hBitmap, 0, 768,
(LPSTR)lpbi + sizeof(BITMAPINFOHEADER)+dwPaletteSize,
(BITMAPINFO *)lpbi, DIB_RGB_COLORS);
if (hOldPal)
{
SelectPalette(hDC, (HPALETTE)hOldPal, TRUE);
RealizePalette(hDC);
::ReleaseDC(NULL, hDC);
}
LPSTR lpFileName = (LPSTR)FileName.GetBuffer(FileName.GetLength());
fh = CreateFile(lpFileName,
GENERIC_WRITE,
0,//not be shared
NULL, //cannot be inherited
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN,
NULL);
if (fh == INVALID_HANDLE_VALUE)
return FALSE;
bmfHdr.bfType = 0x4D42; // "BM"
dwDIBSize = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+dwPaletteSize+dwBmBitsSize;
bmfHdr.bfSize = dwDIBSize;
bmfHdr.bfReserved1 = 0;
bmfHdr.bfReserved2 = 0;
bmfHdr.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + (DWORD)sizeof(BITMAPINFOHEADER)+ dwPaletteSize;
//write file header
WriteFile(fh, (LPSTR)&bmfHdr, sizeof(BITMAPFILEHEADER), &dwWritten, NULL);
//write bmp data
WriteFile(fh, (LPSTR)lpbi, dwDIBSize, &dwWritten, NULL);
GlobalUnlock(hDib);
GlobalFree(hDib);
CloseHandle(fh);
return TRUE;
}
我建立一个IWebBrowser2 并指向了一个网址,也打开了,但是按照上面提供的方法得到BMP并保存到图片文件后,打开后是黑屏
请教到底是哪里错了
Kudeet
2006-12-11
打赏
举报
回复
Maybe you can try to use ie instance window, please refer to
http://support.microsoft.com/kb/176792
Kudeet
2006-12-11
打赏
举报
回复
http://groups.google.com/group/microsoft.public.win32.programmer.gdi/browse_frm/thread/6da1f405db299396/efde7b30b15a5188?lnk=st&q=capture+IE+window&rnum=20&hl=zh-CN#efde7b30b15a5188
flybox0384
2006-12-11
打赏
举报
回复
是将获得的整个网页为保存为图片。
蒋晟
2006-12-11
打赏
举报
回复
http://www.codeproject.com/internet/htmlimagecapture.asp
mm12333
2006-12-10
打赏
举报
回复
是要保存网页为图片呢
还是要保存图片为图片?
获取
web控件上的
图片
vb
获取
web控件上的
图片
下载
网页
源码并用正则表达式提取
图片
vb
下载
网页
源码并用正则表达式提取
图片
,提取
网页
图片
编写ocx时如何通过
url
获取
资源信息(
图片
等)
在开发ocx作为
网页
插件时,如何通过
网页
传过的
url
获取
网页
上的资源加载到本地
获取
到缓存,然后对该资源进行分析
基于ASP的雪松宅
图片
站爬虫 bulid 修改版.zip
基于ASP的雪松宅
图片
站爬虫 bulid 修改版.zip
url
downloa
d
File
根据
URL
地址,下载文件并
保存
到指定目录
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章