C#网页转换为图片

调用:

引用 System.Windows.Forms 命名空间:

WebsiteToImage websiteToImage = new WebsiteToImage("页面路径", @"图片保存路径");
websiteToImage.Generate();

 

 

 

 

被调用代码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Drawing;

using System.Threading;

using System.Windows.Forms;

using System.Drawing.Imaging;

using System.IO;

namespace Business {

 

public class WebsiteToImage {

       private Bitmap m_Bitmap;

      private string m_Url;

      private string m_FileName = string.Empty;

public WebsiteToImage(string url)

{

        m_Url = url;

}

/// </summary>
/// <param name="url">网页路径</param>
/// <param name="fileName">照片存储路径</param>

public WebsiteToImage(string url, string fileName)

{

    m_Url = url;

    m_FileName = fileName;

public Bitmap Generate()

{

       var m_thread = new Thread(_Generate);

      m_thread.SetApartmentState(ApartmentState.STA);

      m_thread.Start();

      m_thread.Join();

      return m_Bitmap;

}

private void _Generate()

{

     var browser = new WebBrowser{ScrollBarsEnabled = false };

     browser.Navigate(m_Url);

     browser.DocumentCompleted += WebBrowser_DocumentCompleted;

     while (browser.ReadyState != WebBrowserReadyState.Complete)

         {

             Application.DoEvents();

        }

      browser.Dispose();

    }

 

 

private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

    {

          var browser = (WebBrowser)sender;

         //宽,高

        browser.ClientSize = new Size(618,500);

        browser.ScrollBarsEnabled = false;

      //宽,高

     m_Bitmap = new Bitmap(618, 500);

     browser.BringToFront();

    browser.DrawToBitmap(m_Bitmap, browser.Bounds);

     if (m_FileName.Length > 0)

         { 

            m_Bitmap.SaveJPG100(m_FileName);

        }

    }

}

 

public static class BitmapExtensions

{

         public static void SaveJPG100(this Bitmap bmp, string filename)

          { 

             var encoderParameters = new EncoderParameters(1);

           encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);

          bmp.Save(filename, GetEncoder(ImageFormat.Jpeg), encoderParameters);

         }

      public static void SaveJPG100(this Bitmap bmp, Stream stream)

      {

         var encoderParameters = new EncoderParameters(1);

         encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);

        bmp.Save(stream, GetEncoder(ImageFormat.Jpeg), encoderParameters);

     }

 

  public static ImageCodecInfo GetEncoder(ImageFormat format)

   {

      var codecs = ImageCodecInfo.GetImageDecoders();

      foreach (var codec in codecs)

       {

            if (codec.FormatID == format.Guid)

             {

                 return codec;

            }

    }

     

      return null;

      }

   }

}

转载于:https://www.cnblogs.com/zlkkk/p/8478480.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值