zoukankan      html  css  js  c++  java
  • 跟据html页面生成图片方便打印分享

    先定义一个类 WebSiteThumbnail

    引入

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

    public class WebSiteThumbnail
    {
    Bitmap m_Bitmap;
    string m_Url;
    int m_BrowserWidth, m_BrowserHeight, m_ThumbnailWidth, m_ThumbnailHeight;
    public WebSiteThumbnail(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 GetWebSiteThumbnail(string Url, int BrowserWidth, int BrowserHeight, int ThumbnailWidth, int ThumbnailHeight)
    {
    WebSiteThumbnail thumbnailGenerator = new WebSiteThumbnail(Url, BrowserWidth, BrowserHeight, ThumbnailWidth, ThumbnailHeight);
    return thumbnailGenerator.GenerateWebSiteThumbnailImage();
    }

    public Bitmap GenerateWebSiteThumbnailImage()
    {
    Thread m_thread = new Thread(new ThreadStart(_GenerateWebSiteThumbnailImage));
    m_thread.SetApartmentState(ApartmentState.STA);
    m_thread.Start();
    m_thread.Join();
    return m_Bitmap;
    }
    private void _GenerateWebSiteThumbnailImage()
    {
    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);
    }
    }

    页面处理

    <body>
    <form id="form1" runat="server">
    <div>
    <img src="<%=imgref %>" />
    </div>
    </form>
    </body>

    后台处理

    public string imgref = String.Empty;
    protected void Page_Load(object sender, EventArgs e)
    {

    Bitmap m_Bitmap = WebSiteThumbnail.GetWebSiteThumbnail("http://www.baidu.com", 640, 1079, 600, 600);
    MemoryStream ms = new MemoryStream();
    m_Bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);//JPG、GIF、PNG等均可
    byte[] buff = ms.ToArray();
    // Response.BinaryWrite(buff);

    System.Drawing.Image img = byteArrayToImage(buff);
    string url = "/123.png";
    imgref = url;
    img.Save(HttpContext.Current.Server.MapPath(url));
    }
    /// <summary>
    /// 根据图片字节流获取Image实例
    /// </summary>
    /// <param name="imagebyte"></param>
    /// <returns></returns>
    public System.Drawing.Image byteArrayToImage(byte[] imagebyte)
    {
    System.Drawing.Image image;
    MemoryStream imagememorystream = new MemoryStream(imagebyte, 0, imagebyte.Length);
    image = System.Drawing.Image.FromStream(imagememorystream);
    return image;
    }

    可生成一个名为123.png的图片(百度首页)

  • 相关阅读:
    流量染色与gRPC服务托管 微服务协作开发、灰度发布之流量染色 灰度发布与流量染色
    http://www.cnblogs.com/sealedbook/p/6194047.html
    celery 原理
    修改织梦默认栏目页、文章页URL命名规则
    Dede首页幻灯版显示Bug修正
    DEDECMS5.7 首页和栏目页调用文章按权重排序
    dede文章摘要字数的设置方法
    DEDECMS登录后台慢的完美解决方案
    DedeCMS去掉友情链接中“织梦链投放”“织梦链”的方法
    删除dedecms5.7后台登陆验证码
  • 原文地址:https://www.cnblogs.com/lookweb/p/5777584.html
Copyright © 2011-2022 走看看