c# html生成图片,C# Html网页生成图片解决方案1

该博客介绍了一个名为`Thumbnail`的类,用于从网页生成缩略图。类提供了两种构造函数,一种用于生成与网页body相同大小的图片,另一种允许自定义生成图片的宽度和高度。`GetThumbnail`方法根据提供的参数获取网页的缩略图,而`GenerateImage`方法则利用`WebBrowser`控件将网页绘制到位图上并进行尺寸调整。
摘要由CSDN通过智能技术生成

///

///网页生成生成图片帮助类///

public classThumbnail

{///

///网页生成的图片///

privateBitmap _bitmap;private string_url;private int_browserWidth, _browserHeight, _tWidth, _tHeight;///

///是否使用,指定的宽度和高度///

public bool IsCustumer { get; set; }///

///指定网页地址,使用页面的body的高度///生成图片的,宽度和高度与body相同///

/// 网页地址

/// 浏览器宽度

public Thumbnail(string url, intbrowserWidth)

{

IsCustumer= false;

_url=url;

_browserWidth=browserWidth;

}///

///初始化构造///

/// 网页地址

/// 浏览器宽度

/// 浏览器高度

/// 生成图片宽度

/// 生成图片高度

public Thumbnail(string url, int browserWidth, int browserHeight, int tWidth, inttHeight)

{

IsCustumer= true;

_url=url;

_browserWidth=browserWidth;

_browserHeight=browserHeight;

_tWidth=tWidth;

_tHeight=tHeight;

}///

///获取网页的图片///

/// 网页地址

/// 浏览器宽度

/// 浏览器高度

/// 生成图片宽度

/// 生成图片高度

public static Bitmap GetThumbnail(string url, int browserWidth, int browserHeight, int tWidth, inttHeight)

{

Thumbnail thumb= newThumbnail(url, browserWidth, browserHeight, tWidth, tHeight);returnthumb.GenerateImage();

}///

///生成图片信息///

///

publicBitmap GenerateImage()

{

Thread thread= new Thread(newThreadStart(_GenerateImage));

thread.SetApartmentState(ApartmentState.STA);

thread.Start();

thread.Join();return_bitmap;

}///

///使用WebBrowser生成图片///

private void_GenerateImage()

{

WebBrowser browser= newWebBrowser();

browser.ScrollBarsEnabled= false;

browser.ScriptErrorsSuppressed= false;

browser.Navigate(_url);

browser.DocumentCompleted+= newWebBrowserDocumentCompletedEventHandler(_DocumentCompleted);while (browser.ReadyState !=WebBrowserReadyState.Complete)

Application.DoEvents();

browser.Dispose();

}///

///页面加载完成事件///

private void _DocumentCompleted(objectsender, WebBrowserDocumentCompletedEventArgs e)

{

WebBrowser browser= sender asWebBrowser;if(IsCustumer)

{//生成自定义宽度和高度的图片

browser.ClientSize = newSize(_browserWidth, _browserHeight);

_bitmap= newBitmap(browser.Bounds.Width, browser.Bounds.Height);

browser.DrawToBitmap(_bitmap, browser.Bounds);

_bitmap= (Bitmap)_bitmap.GetThumbnailImage(_tWidth, _tHeight, null, IntPtr.Zero);

}else{//生成默认body宽度和高度的图片(最常用)

_browserHeight = 5000;if (browser.Document.Body != null)

{

_browserHeight=browser.Document.Body.OffsetRectangle.Height;

browser.ClientSize= newSize(_browserWidth, _browserHeight);

Rectangle bodyRect=browser.Document.Body.OffsetRectangle;

_bitmap= newBitmap(_browserWidth, bodyRect.Height);

browser.BringToFront();

browser.DrawToBitmap(_bitmap, bodyRect);

_bitmap= (Bitmap)_bitmap.GetThumbnailImage(_browserWidth, bodyRect.Height, null, IntPtr.Zero);

}else{

browser.ClientSize= newSize(_browserWidth, _browserHeight);

_bitmap= newBitmap(_browserWidth, _browserHeight);

browser.BringToFront();

browser.DrawToBitmap(_bitmap,new Rectangle(0,0,_browserWidth,_browserHeight));

_bitmap= (Bitmap)_bitmap.GetThumbnailImage(_browserWidth, _browserHeight, null, IntPtr.Zero);

}//_bitmap = (Bitmap)_bitmap.GetThumbnailImage(bodyRect.Width, bodyRect.Height, null, IntPtr.Zero);

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值