【修改代码】怎样直接获取页面宽和高???

chate 2012-04-27 04:37:55
抓取网页快照的时候,下面的语句只能抓取指定尺寸的图片,有时候抓不全,有时候留下好多空白:
Bitmap bmp = HtmlToImg.GetHtmlToImg("http://www.baidu.com", 600, 500, 600, 500);
怎样直接获取被抓取页面的宽和高?谁能直接修改下面的代码帮我实现(网上搜的m_webBrowser.Document.Window.Size;可以吗?该怎么用?):
aspx.cs

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
using System.IO;


public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
Bitmap bmp = HtmlToImg.GetHtmlToImg("http://www.baidu.com", 600, 500, 600, 500);
MemoryStream stream = new MemoryStream();
bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] buff = stream.ToArray();
FileStream fs = new FileStream(Server.MapPath(DateTime.Now.ToString("yyyyMMddHHmmss") + ".jpg"), FileMode.Create);
stream.WriteTo(fs);
stream.Close();
fs.Close();
}
}

HtmlToImage.cs

using System;
using System.Drawing;
using System.Threading;
using System.Windows.Forms;

/// <summary>
/// 生成网页快照
/// </summary>
public class HtmlToImg
{
Bitmap m_Bitmap;
string m_Url;
int m_BrowserWidth, m_BrowserHeight, m_ThumbnailWidth, m_ThumbnailHeight;

public HtmlToImg(string Url, int BrowserWidth, int BrowserHeight, int ThumbnailWidth, int ThumbnailHeight)
{
m_Url = Url;
m_BrowserHeight = BrowserHeight;
m_BrowserWidth = BrowserWidth;
m_ThumbnailWidth = ThumbnailWidth;
m_ThumbnailHeight = ThumbnailHeight;
}

public static Bitmap GetHtmlToImg(string Url, int BrowserWidth, int BrowserHeight, int ThumbnailWidth, int ThumbnailHeight)
{
HtmlToImg thumbnailGenerator = new HtmlToImg(Url, BrowserWidth, BrowserHeight, ThumbnailWidth, ThumbnailHeight);
return thumbnailGenerator.GenerateHtmlToImgImage();
}

public Bitmap GenerateHtmlToImgImage()
{
Thread m_thread = new Thread(new ThreadStart(_GenerateHtmlToImgImage));
m_thread.SetApartmentState(ApartmentState.STA);
m_thread.Start();
m_thread.Join();
return m_Bitmap;
}

private void _GenerateHtmlToImgImage()
{
WebBrowser m_WebBrowser = new WebBrowser();
m_WebBrowser.ScrollBarsEnabled = false;
m_WebBrowser.Navigate(m_Url);
m_WebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);
while (m_WebBrowser.ReadyState != WebBrowserReadyState.Complete)
Application.DoEvents();
m_WebBrowser.Dispose();
}

private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser m_WebBrowser = (WebBrowser)sender;
m_WebBrowser.ClientSize = new Size(this.m_BrowserWidth, this.m_BrowserHeight);
m_WebBrowser.ScrollBarsEnabled = false;
m_Bitmap = new Bitmap(m_WebBrowser.Bounds.Width, m_WebBrowser.Bounds.Height);
m_WebBrowser.BringToFront();
m_WebBrowser.DrawToBitmap(m_Bitmap, m_WebBrowser.Bounds);
m_Bitmap = (Bitmap)m_Bitmap.GetThumbnailImage(m_ThumbnailWidth, m_ThumbnailHeight, null, IntPtr.Zero);
}

}

...全文
271 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chate 2012-07-24
  • 打赏
  • 举报
回复
这是旧帖子,你可帮了我的大忙呢!想不到你这么高的高人得分却这么少(甚至比我这样的外行也少的多)——看来你确实不在意这些分数啊~~
这就加分结贴,分数无所谓,愿友情常在![Quote=引用 8 楼 的回复:]

盛情难却呀,我来顶一下
[/Quote]
wujianxyz 2012-07-23
  • 打赏
  • 举报
回复
盛情难却呀,我来顶一下
chate 2012-05-29
  • 打赏
  • 举报
回复
我直接设置:string gao =webBrowser.Document.Body.ScrollRectangle.Height;
编译器错误信息: CS0103: 当前上下文中不存在名称“webBrowser”
求助!
chate 2012-05-28
  • 打赏
  • 举报
回复
谁帮我把这个属性用到上面的代码里?
求源码!
chate 2012-05-25
  • 打赏
  • 举报
回复
我只是照搬代码运行的水平,真的不知道这个属性该怎么用。给您发私信想要个例子也没有回音,您能在这里告诉我怎样把这个属性用到上面的代码里吗?也请大家帮我看看。
[Quote=引用 4 楼 的回复:]
你可以试试WebBrowser 的Document对象的属性啊

webBrowser.Document.Body.ScrollRectangle.Height
or
webBrowser.Document.Body.OffsetRectangle.Bottom
[/Quote]
孟子E章 2012-05-11
  • 打赏
  • 举报
回复
你可以试试WebBrowser 的Document对象的属性啊

webBrowser.Document.Body.ScrollRectangle.Height
or
webBrowser.Document.Body.OffsetRectangle.Bottom
chate 2012-05-11
  • 打赏
  • 举报
回复
应该可以的啊!
chate 2012-05-02
  • 打赏
  • 举报
回复
怎么没人回答啊~~~
chate 2012-04-28
  • 打赏
  • 举报
回复
网页尺寸应该怎样获取?

110,577

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧