把整个网页保存成JPG图片(针对单框架网页)

 
  
procedure TForm1.Button1Click(Sender: TObject);
var
Doc: IHTMLDocument2;
ViewObject: IViewObject;
sourceDrawRect: TRect;
a, getjpg: TBitMap;
i, m: integer;
pdest, psour: hbitmap;
jpg: tjpegimage;
begin
Doc :
= WebBrowser.Document as IHTMLDocument2;
if Webbrowser.Document <> nil then
try
webbrowser.Document.QueryInterface(IViewObject, ViewObject);
if ViewObject <> nil then
try
Doc.Get_ParentWindow.Scroll(
0 , 0 ); // 跳到网页头
getjpg :
= TBitMap.Create();
getjpg.PixelFormat :
= pf24bit;
getjpg.Height :
= doc.Body.getAttribute( ' scrollHeight ' , 0 );
getjpg.Width :
= doc.Body.getAttribute( ' scrollwidth ' , 0 );
pdest :
= getjpg.Canvas.Handle;
m :
= Trunc(doc.Body.getAttribute( ' ScrollHeight ' , 0 ) / (doc.Body.getAttribute( ' offsetHeight ' , 0 ) - 20 ));
i :
= Trunc(doc.Body.getAttribute( ' Scrollwidth ' , 0 ) / (doc.Body.getAttribute( ' offsetwidth ' , 0 ) - 20 ));
for i : = 0 to i do
begin
for m : = 0 to m 1 do
begin
a :
= TBitMap.Create();
a.Height :
= doc.Body.getAttribute( ' offsetHeight ' , 0 );
a.Width :
= doc.Body.getAttribute( ' offsetwidth ' , 0 );
psour :
= a.Canvas.handle;
sourceDrawRect :
= Rect( 0 , 0 , a.Width, a.Height);
ViewObject.Draw(DVASPECT_CONTENT,
1 , nil , nil , Self.Handle, a.Canvas.Handle, @sourceDrawRect, nil , nil , 0 );
bitblt(pdest, doc.Body.getAttribute(
' scrollLeft ' , 0 ), doc.Body.getAttribute( ' Scrolltop ' , 0 ), a.Width, a.Height, psour, 2 , 2 , srccopy);
Doc.Get_ParentWindow.Scroll(doc.Body.getAttribute(
' scrollLeft ' , 0 ), doc.Body.getAttribute( ' offsetHeight ' , 0 ) doc.Body.getAttribute( ' Scrolltop ' , 0 ) - GetSystemMetrics(SM_CXVSCROLL) - 24 );
a.Free;
end ;
Doc.Get_ParentWindow.Scroll(doc.Body.getAttribute(
' offsetwidth ' , 0 ) doc.Body.getAttribute( ' scrollLeft ' , 0 ) - GetSystemMetrics(SM_CXVSCROLL) - 24 , 0 );
end ;
jpg :
= tjpegimage.Create;
jpg.Assign(getjpg);
getjpg.Free;
jpg.SaveToFile(
' c:\test.jpg ' );
jpg.Free;
finally
ViewObject._Release;
end ;
except
end ;
end ;

转载于:https://www.cnblogs.com/jxsoft/archive/2011/03/21/1990092.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值