1.使用System.Windows.Forms命名空间下的WebBrowser控件加载网页并生成图片

GiHub参考地址:

https://github.com/tianma3798/FileOparate/

使用方法:

public static void TestOne()
{
ThumbnailImg img = new ThumbnailImg("e:\\one.png");
//img.SetToJpeg();
//img.SetToGif();
ThumbnailOperate _operate = new ThumbnailOperate("http://korea.weilanliuxue.cn", img);
_operate.GenerateImg();
Console.WriteLine("保存成功");
}

核心代码类:

    /// <summary>
/// 网页生成生成图片帮助类
/// </summary>
public class Thumbnail
{
/// <summary>
/// 网页生成的图片
/// </summary>
private Bitmap _bitmap;
private string _url;
private int _browserWidth, _browserHeight, _tWidth, _tHeight;
/// <summary>
/// 是否使用,指定的宽度和高度
/// </summary>
public bool IsCustumer { get; set; }
/// <summary>
/// 指定网页地址,使用页面的body的高度
/// 生成图片的,宽度和高度与body相同
/// </summary>
/// <param name="url">网页地址</param>
/// <param name="browserWidth">浏览器宽度</param>
public Thumbnail(string url, int browserWidth)
{
IsCustumer = false;
_url = url;
_browserWidth = browserWidth;
}
/// <summary>
/// 初始化构造
/// </summary>
/// <param name="url">网页地址</param>
/// <param name="browserWidth">浏览器宽度</param>
/// <param name="browserHeight">浏览器高度</param>
/// <param name="tWidth">生成图片宽度</param>
/// <param name="tHeight">生成图片高度</param>
public Thumbnail(string url, int browserWidth, int browserHeight, int tWidth, int tHeight)
{
IsCustumer = true;
_url = url;
_browserWidth = browserWidth;
_browserHeight = browserHeight;
_tWidth = tWidth;
_tHeight = tHeight;
}
/// <summary>
/// 获取网页的图片
/// </summary>
/// <param name="url">网页地址</param>
/// <param name="browserWidth">浏览器宽度</param>
/// <param name="browserHeight">浏览器高度</param>
/// <param name="tWidth">生成图片宽度</param>
/// <param name="tHeight">生成图片高度</param>
public static Bitmap GetThumbnail(string url, int browserWidth, int browserHeight, int tWidth, int tHeight)
{
Thumbnail thumb = new Thumbnail(url, browserWidth, browserHeight, tWidth, tHeight);
return thumb.GenerateImage();
}
/// <summary>
/// 生成图片信息
/// </summary>
/// <returns></returns>
public Bitmap GenerateImage()
{
Thread thread = new Thread(new ThreadStart(_GenerateImage));
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
return _bitmap;
}
/// <summary>
/// 使用WebBrowser生成图片
/// </summary>
private void _GenerateImage()
{
WebBrowser browser = new WebBrowser();
browser.ScrollBarsEnabled = false;
browser.ScriptErrorsSuppressed = false;
browser.Navigate(_url);
browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(_DocumentCompleted);
while (browser.ReadyState != WebBrowserReadyState.Complete)
Application.DoEvents();
browser.Dispose();
}
/// <summary>
/// 页面加载完成事件
/// </summary>
private void _DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser browser = sender as WebBrowser;
if (IsCustumer)
{
//生成自定义宽度和高度的图片
browser.ClientSize = new Size(_browserWidth, _browserHeight);
_bitmap = new Bitmap(browser.Bounds.Width, browser.Bounds.Height);
browser.DrawToBitmap(_bitmap, browser.Bounds);
_bitmap = (Bitmap)_bitmap.GetThumbnailImage(_tWidth, _tHeight, null, IntPtr.Zero);
}
else
{
//生成默认body宽度和高度的图片(最常用)
_browserHeight = ;
if (browser.Document.Body != null)
{
_browserHeight = browser.Document.Body.OffsetRectangle.Height;
browser.ClientSize = new Size(_browserWidth, _browserHeight);
Rectangle bodyRect = browser.Document.Body.OffsetRectangle;
_bitmap = new Bitmap(_browserWidth, bodyRect.Height);
browser.BringToFront();
browser.DrawToBitmap(_bitmap, bodyRect);
_bitmap = (Bitmap)_bitmap.GetThumbnailImage(_browserWidth, bodyRect.Height, null, IntPtr.Zero);
}
else
{
browser.ClientSize = new Size(_browserWidth, _browserHeight);
_bitmap = new Bitmap(_browserWidth, _browserHeight);
browser.BringToFront();
browser.DrawToBitmap(_bitmap, new Rectangle(,,_browserWidth,_browserHeight));
_bitmap = (Bitmap)_bitmap.GetThumbnailImage(_browserWidth, _browserHeight, null, IntPtr.Zero);
} //_bitmap = (Bitmap)_bitmap.GetThumbnailImage(bodyRect.Width, bodyRect.Height, null, IntPtr.Zero);
}
}
}

C# Html网页生成图片解决方案1的更多相关文章

  1. Winform将网页生成图片

    今天无意见看到浏览器有将网页生成图片的功能,顿时赶脚很好奇,于是就找了找资料自己做了一个类似的功能. 工具截图:生成后的图片 手动填写网站地址,可选择图片类型和保持图片地址,来生成页面的图片,当图片路 ...

  2. 70.JS---利用原生js做手机端网页自适应解决方案rem布局

    利用原生js做手机端网页自适应解决方案rem布局 刚开始我用的是下面这段代码,然后js通过外部链接引入,最后每次用手机刷新网页的时候都会出现缩略图 function getRem(pwidth, pr ...

  3. JS 网页打印解决方案

    这些日子真是太忙了,项目太多了公司总是加班,而且这些项目中好多都用到的打印,所以学习了一段时间js的打印. 其实原来只是用到了简单的功能,现在要深入的了解才发现原来ie的网页打印也是如此的强大. 以下 ...

  4. php中网页生成图片的方式

    在网上找了很多方法,发现与自己最初的思路也是大同小异,那就是HTML——>PDF——>JPG.从上午9点钟一直搞到下午6点钟,代码方面其实很简单,更多的还是环境和PHP拓展上面,忙了一天的 ...

  5. WinForm嵌入Web网页的解决方案

    企业级信息化系统绝大部分采用BS架构实现,如门户网站.OA系统.电商网站等,通过浏览器输入Web网址即可访问,对于使用者来说非常便捷,对于开发维护者来说也非常方便,程序维护只需更新服务器即可,使用者无 ...

  6. 网页转图片,html生成图片,网页生成图片(基于linnux+phantomjs)和wkhtmltoimage

    安装扩展:  (1)下面是我在linux上的安装过程,如果没有安装git请先yum install git    安装casperjs    cd /    git clone git://githu ...

  7. Edge 通过代理无法打开网页,解决方案

    netsh winhttp import proxy source=ie

  8. C# WebBrowser控件使用整理

    一.简介 WebBrowser 控件为 WebBrowser ActiveX 控件提供了托管包装. 托管包装使您可以在 Windows 窗体客户端应用程序中显示网页. 使用WebBrowser 控件, ...

  9. html2canvas.js网页截图功能

    需求:将网页生成图片,用户自行长按图片进行保存图片,再分享朋友圈.其中,都可识别图中的二维码.(二维码过小会识别不出) 首先,先来科普一下微信网页识别二维码原理:截屏识别,当客户端发现用户在网页的im ...

随机推荐

  1. Boost使用笔记(Smart_ptr)

    我是Word写的,复制过来实在懒得在排版了,有兴趣的朋友可以去我的百度文库看,谢谢 http://wenku.baidu.com/view/34e485e2f61fb7360b4c653e.html ...

  2. SCJP_104——题目分析(2)

    3. public class IfTest{ public static void main(String args[]){ int x=3; int y=1; if(x=y) System.out ...

  3. Serilog with Autofac

    http://serilog.net/  ---不错的日志工具 1.直接绑定 builder.Register<ILogger>((c, p) => { return new Log ...

  4. SlidingMenu和ActionBarSherlock结合滑动式菜单都

    https://github.com/jfeinstein10/SlidingMenu http://actionbarsherlock.com/ SlidingMenu 的demo工程引用了Acti ...

  5. HBase HFile

    HFile index HFile index, which is proportional to the total number of Data Blocks. The total amount ...

  6. HDFS基础和java api操作

    1. 概括 适合一次写入多次查询情况,不支持并发写情况 通过hadoop shell 上传的文件存放在DataNode的block中,通过linux shell只能看见block,看不见文件(HDFS ...

  7. 编写SQL

    create table student ( sno char(9) primary key, sname char(20) unique, ssex char(2), sage smallint, ...

  8. [LeetCode] 187. Repeated DNA Sequences 解题思路

    All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACG ...

  9. 微博广告推荐中有关Hadoop的那些事

    一.背景 微博,一个DAU上亿.每日发博量几千万的社交性产品,拥有庞大的数据集.如何高效得从如此规模的数据集中挖掘出有价值的信息,以增强用户粘性,提高信息传播速度,就成了重中之重.因此,我们引入了ha ...

  10. [置顶] JSP中使用taglib出错终极解决办法

    jsp中 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <c ...