捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
盒子资源分类
全部展开 - 全部合拢
把整个网页保存成JPG图片(针对单框架网页)
关键字:JPG Scroll Capture 滚动 抓图 网页
来 自:原创
平 台:Win9x,Win2k/NT,WinXP 下载所需:0 火柴
深浅度:中级 完成时间:2004/8/10
发布者:hdflove 发布时间:2004/8/19
编辑器:DELPHI7 语  种:简体中文
分 类:媒体与图形 下载浏览:2416/25265
加入到我的收藏
下载错误报错
登陆以后才能下载
 用户名:
 密 码:
自动登陆(30天有效)
图片如果打不开,说明流量不够了,请稍候下载……
把网页抓图保存成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;
Google
 
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们
龙脉加密锁 15元起 Grid++Report 报表 申请支付@网
 相关文章
网站滚动截图的两种方法
HDFLOVE 2006/9/20 下+2807/浏+17469 评+5
把整个网页保存成JPG图片(针对单框架网页)
hdflove 2004/8/19 下+2416/浏+25266 评+9
滚屏截图的演示例子
hotyei 2004/2/27 下+991/浏+13230 评+10
相关评论
共有评论9条 当前显示最后6条评论
zxf_1 2004/8/23 10:11:28
不错,我试了163。NET生成1。3M的图片,是不是有点大呀
hdflove 2004/8/23 14:05:01
可以修改 getjpg.PixelFormat := pf24bit;
可以用压缩啊
x2002025011 2004/9/12 15:03:38
我用拉
谢谢
mbahamut 2005/6/5 12:52:13
实用啊,感谢。
hdflove 2005/9/20 1:20:48
可以修改 
      Jpg.CompressionQuality := 50; //你想要的压缩
      Jpg.Compress;
      Jpg.SaveToFile('c:\test.jpg');
可以用压缩啊
isxuzhu 2005/12/18 11:25:49
hdflove兄,你的代码很有借鉴价值,谢谢!
我想做个IE右键菜单挂勾“网页保存到图片”,关键是如何将
“Doc: IHTMLDocument2;
  ViewObject: IViewObject;”设置成IE中的相应组件。难道是去IE中FINDWINDOW找相应组件的句柄,之后赋给DOC和VIEWOBJECT?不甚了解,可否告知,感激!
我要发表评论 查看全部评论
 
  DELPHI盒子版权所有 1999-2023 V4.01 粤ICP备10103342号-1 更新RSS列表