C#实现HTML转图片(网页快照)

有时候我们需要将网页转成图片,那么可以使用WebBrowser来生成网页快照,废话不多说,代码如下

1、网页快照帮助类(如果是BS或控制台需要引用System.Windows.Forms类库):

 1     public class WebSnapshotsHelper
 2     {
 3         Bitmap m_Bitmap;
 4         string m_Url;
 5         int m_BrowserWidth, m_BrowserHeight, m_ThumbnailWidth, m_ThumbnailHeight;
 6         public WebSnapshotsHelper(string Url, int BrowserWidth, int BrowserHeight, int ThumbnailWidth, int ThumbnailHeight)
 7         {
 8             m_Url = Url;
 9             m_BrowserHeight = BrowserHeight;
10             m_BrowserWidth = BrowserWidth;
11             m_ThumbnailWidth = ThumbnailWidth;
12             m_ThumbnailHeight = ThumbnailHeight;
13         }
14         public static Bitmap GetWebSiteThumbnail(string Url, int BrowserWidth, int BrowserHeight, int ThumbnailWidth, int ThumbnailHeight)
15         {
16             WebSnapshotsHelper thumbnailGenerator = new WebSnapshotsHelper(Url, BrowserWidth, BrowserHeight, ThumbnailWidth, ThumbnailHeight);
17             return thumbnailGenerator.GenerateWebSiteThumbnailImage();
18         }
19         public Bitmap GenerateWebSiteThumbnailImage()
20         {
21             Thread m_thread = new Thread(new ThreadStart(_GenerateWebSiteThumbnailImage));
22             m_thread.SetApartmentState(ApartmentState.STA);
23             m_thread.Start();
24             m_thread.Join();
25             return m_Bitmap;
26         }
27         private void _GenerateWebSiteThumbnailImage()
28         {
29             WebBrowser m_WebBrowser = new WebBrowser();
30             m_WebBrowser.ScrollBarsEnabled = false;
31             m_WebBrowser.Navigate(m_Url);
32             m_WebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);
33             while (m_WebBrowser.ReadyState != WebBrowserReadyState.Complete)
34                 Application.DoEvents();
35             m_WebBrowser.Dispose();
36         }
37         private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
38         {
39             WebBrowser m_WebBrowser = (WebBrowser)sender;
40             m_WebBrowser.ClientSize = new Size(this.m_BrowserWidth, this.m_BrowserHeight);
41             m_WebBrowser.ScrollBarsEnabled = false;
42             m_Bitmap = new Bitmap(m_WebBrowser.Bounds.Width, m_WebBrowser.Bounds.Height);
43             m_WebBrowser.BringToFront();
44             m_WebBrowser.DrawToBitmap(m_Bitmap, m_WebBrowser.Bounds);
45             m_Bitmap = (Bitmap)m_Bitmap.GetThumbnailImage(m_ThumbnailWidth, m_ThumbnailHeight, null, IntPtr.Zero);
46         }
47
48     }

2、调用:

1 Bitmap m_Bitmap = WebSnapshotsHelper.GetWebSiteThumbnail("http://www.cnblogs.com/", 800, 1200, 800, 1200); //宽高根据要获取快照的网页决定
2 m_Bitmap.Save("render_img.bmp", System.Drawing.Imaging.ImageFormat.Bmp); //图片格式可以自由控制

3、效果:

这个可以在 html页面以一张图片为背景,在其中填空,最后调用此Helper方法来生成图片。

最后说一下:这个使用的是WebBrowser为核心,所以生成的html会根据IE内核来渲染,如果页面中使用到了HTML5、CSS3,那推荐部署的服务器装有IE10及以上浏览器,由于是在服务端生成,对客户端浏览器是没有限制。

时间: 2024-12-13 16:48:02

C#实现HTML转图片(网页快照)的相关文章

【转】C#实现HTML转图片(网页快照)

有时候我们需要将网页转成图片,那么可以使用WebBrowser来生成网页快照,废话不多说,代码如下 1.网页快照帮助类(如果是BS或控制台需要引用System.Windows.Forms类库): public class WebSnapshotsHelper { Bitmap m_Bitmap; string m_Url; int m_BrowserWidth, m_BrowserHeight, m_ThumbnailWidth, m_ThumbnailHeight; public WebSna

shell脚本获取网页快照并生成缩略图

获取网页快照并生成缩略图可分两步进行: 1.获取网页快照 2.生成缩略图 获取网页快照 这里我们用 phantomjs 来实现.关于 phantomjs 的详细用法可参考 官方网站 . 1.安装 我的环境是CentOS6.5,安装时直接下载 tarball 然后解压即可. # wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-i686.tar.bz2 # tar -jxvf phantomjs-1

linux命令行抓取网页快照

公司研发需求,在Centos下将页面快照成图片,通过谷歌查到cutycapt可以实现,进行了实验,效果还不错,整理下安装过程. 1.环境信息 系统:Centos6.6 x86_64 2.添加qt47的yum源 vim /etc/yum.repos.d/atrpms.repo添加如下内容 [atrpms] name=CentOS $releasever-$basearch-ATrpms baseurl=http://dl.atrpms.net/el$releasever-$basearch/atr

[转]Phantomjs实现获取网页快照并生成缩略图

Shell脚本实现获取网页快照并生成缩略图 这篇文章主要介绍了Shell脚本实现获取网页快照并生成缩略图,本文获取网页快照使用phantomjs.生成缩略图使用ImageMagick,需要的朋友可以参考下 获取网页快照并生成缩略图可分两步进行: 1.获取网页快照 2.生成缩略图 获取网页快照 这里我们用 phantomjs 来实现.关于 phantomjs 的详细用法可参考官方网站.http://phantomjs.org/ 1.安装 我的环境是CentOS 7,安装时直接下载源码,我下的版本是

jq upload图片上传代码

/* * 图片上传 * */ function postImgData() { $("#addFileInfo input[name='file']").change(function () { console.log($(this).val()) if (!$(this).val()) { return } var fileTyle = $(this).val().split("."); console.log(fileTyle); if (fileTyle[1]

Android小例子:使用反射机制来读取图片制作一个图片浏览器

效果图: 工程文件夹: 该例子可供于新手参考练习,如果有哪里不对的地方,望指正>-< <黑幕下的人> java代码(MainActivity.java): package com.example.imageswitchtest; import java.lang.reflect.Field; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.v

微信小程序--图片相关问题合辑

图片上传相关文章 微信小程序多张图片上传功能 微信小程序开发(二)图片上传 微信小程序上传一或多张图片 微信小程序实现选择图片九宫格带预览 ETL:微信小程序之图片上传 微信小程序wx.previewImage预览图片 微信小程序之预览图片 小程序开发:上传图片到腾讯云 .NET开发微信小程序-上传图片到服务器 微信小程序本地图片处理--按屏幕尺寸插入图片 [微信小程序]上传图片到阿里云OSS Python Flask小程序文件(图片)上传技巧 小程序图片上传阿里OSS使用方法 微信小程序问题汇

JS获取图片的缩略图,并且动态的加载多张图片

找了好多资料也没有找到该死的ie的解决办法,最后放弃了ie <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>js获取缩略图</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <st

CSS3图片轮播效果

原文:CSS3图片轮播效果 在网页中用到图片轮播效果,单纯的隐藏.显示,那再简单不过了,要有动画效果,如果是自己写的话(不用jquery等),可能要费点时间.css3的出现,让动画变得不再是问题,而且简单易用.下面介绍我用css3与js写的一个图片轮播效果. 一般图片轮播就是三四张图片: <div class="wrap"> <div class="carousel"> <div><img src="http://