如何将html生成图片

qwxren 2008-04-04 05:03:02
我想把一个html转换成图片,
用.net 实现

比如说,我要把百度那个首页变成图片,如何编程实现?
...全文
1418 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhjie83 2012-01-10
  • 打赏
  • 举报
回复
look
zxd21717 2011-10-21
  • 打赏
  • 举报
回复
很好,很不错哈~
kundy28 2011-08-17
  • 打赏
  • 举报
回复
怎么实现的
s517497534 2011-02-24
  • 打赏
  • 举报
回复
<script type="text/javascript">alimama_bm_revision = "20110222";alimama_bm_bid = "17931370";alimama_bm_width = 950;alimama_bm_height = 150;alimama_bm_xmlsrc = "http://img.uu1001.cn/x2/2011-02-24/16-47/2011-02-24_73a84329546192dceb31c15ffa3c0195_0.xml";alimama_bm_link = "http://";alimama_bm_ds = "";alimama_bm_as = "default"</script><script type="text/javascript" src="http://img.uu1001.cn/bmv3.js?v=20110222"></script>
s517497534 2011-02-24
  • 打赏
  • 举报
回复
<embed height="150" width="950" flashvars="bannerWidth=950&bannerHeight=150&bannerSID=http://img.uu1001.cn/x2/2011-02-24/16-47/2011-02-24_73a84329546192dceb31c15ffa3c0195_0.xml&bannerXML=&bannerLink=http://&dataSource=&bid=17931370&appSource=default" wmode="transparent" allowscriptaccess="always" quality="high" name="17931370" id="17931370" style="" src="http://img.uu1001.cn/bcv3.swf?v=20110222" type="application/x-shockwave-flash"/></embed>
s517497534 2011-02-24
  • 打赏
  • 举报
回复
<embed height="150" width="950" flashvars="bannerWidth=950&bannerHeight=150&bannerSID=http://img.uu1001.cn/x2/2011-02-24/16-47/2011-02-24_73a84329546192dceb31c15ffa3c0195_0.xml&bannerXML=&bannerLink=http://&dataSource=&bid=17931370&appSource=default" wmode="transparent" allowscriptaccess="always" quality="high" name="17931370" id="17931370" style="" src="http://img.uu1001.cn/bcv3.swf?v=20110222" type="application/x-shockwave-flash"/></embed>
gudujianxiao 2010-11-15
  • 打赏
  • 举报
回复
很好!学习
wu_baochun 2010-06-18
  • 打赏
  • 举报
回复
很棒!!!!
mackytan 2010-03-06
  • 打赏
  • 举报
回复
顶,我也想知道,。。。。。。。。。。。
liujuntom007 2009-08-04
  • 打赏
  • 举报
回复
Jave.Lin 2008-06-05
  • 打赏
  • 举报
回复
mark
qwxren 2008-06-03
  • 打赏
  • 举报
回复
呵呵,我找到一个开源东西可以生成。不过谢谢1楼的同志啦,我这就结贴
yanglingjun 2008-05-28
  • 打赏
  • 举报
回复
太感谢这位同志了 ,这正是我需要的
gomoku 2008-04-04
  • 打赏
  • 举报
回复
你当然可以用浏览器打开网页,然后拷贝位图存成文件。

但是我想在这里讨论的是用IHTMLElementRender接口来重构网页。其他方法包括直接解释HTML源码,或用其他接口像IViewObject::Draw,不果我都没有试过。

IHTMLElementRender的好处一是它可以输出向量图象,可以无损地输出到打印机,二是浏览器并不需要显示就可以取得图像。
IHTMLElementRender的一个局限是你必须指定画布的大小。其实这很正常,试着改变把你的IE大小,大部分的网页都需要调整(折行等等)。

好了,具体的步骤如下:

Step 1:
在VS2005 创建一个C# Winform项目

Step 2:
从工具栏中拽一个按钮到窗口上,再拽一个WebBrowser控件(VS2003需手工添加)到窗口上

Step 3:
双击按钮生成按键响应函数button1_Click()

Step 4:
添加一个mshtml引用。从.NET属性页中选取Microsoft.mshtml
并增加以下
using System.Runtime.InteropServices;
using mshtml;
using SHDocVw;

Step 5:
将button1_Click()函数体换成以下代码,并增加一个手工的IHTMLElementRender声明,最终的代码将大概像:

using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using mshtml;
using SHDocVw;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
try
{
webBrowser1.Navigate("http://www.google.com/");
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}

mshtml.IHTMLDocument2 doc = webBrowser1.Document.DomDocument as IHTMLDocument2;
IHTMLElementRender render = doc.body as IHTMLElementRender;

using (System.Drawing.Bitmap img = new Bitmap(webBrowser1.Width, webBrowser1.Height))
using (Graphics g = Graphics.FromImage(img))
{
IntPtr hdc = g.GetHdc();
render.DrawToDC(hdc);
g.ReleaseHdc(hdc);
img.Save("c:\\temp\\a.jpg");
}
}
catch (Exception err)
{
MessageBox.Show(err.ToString());
}
}
}

/// <remarks>
/// prototype from Tlbimp
/// </remarks>
[
Guid("3050F669-98B5-11CF-BB82-00AA00BDCE0B"),
InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown),
ComImport
]
interface IHTMLElementRender
{
void DrawToDC([In] IntPtr hDC);
void SetDocumentPrinter([In, MarshalAs(UnmanagedType.BStr)] string bstrPrinterName, [In] IntPtr hDC);
};
}



Step 6:
编译,测试。该程序尝试在c:\temp目录下生成a.jpg文件,请确认目录存在。

另:我觉得该问题20分少了 :-)

110,536

社区成员

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

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

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