zoukankan      html  css  js  c++  java
  • 对指定的网页进行截图

    首先对项目添加系统引用
    System.Drawing;
    System.Drawing.Design;
    System.Windows.Forms;

    获取指定网页并转换成图片的类:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Drawing.Imaging;
    using System.Windows.Forms;
    using System.Diagnostics;

    namespace MyLib
    {
    public class GetImage
    {
    private int S_Height;
    private int S_Width;
    private int F_Height;
    private int F_Width;
    private string MyURL;

    public int ScreenHeight
    {
    get { return S_Height; }
    set { S_Height = value; }
    }

    public int ScreenWidth
    {
    get { return S_Width; }
    set { S_Width = value; }
    }

    public int ImageHeight
    {
    get { return F_Height; }
    set { F_Height = value; }
    }

    public int ImageWidth
    {
    get { return F_Width; }
    set { F_Width = value; }
    }

    public string WebSite
    {
    get { return MyURL; }
    set { MyURL = value; }
    }

    public GetImage(string WebSite, int ScreenWidth, int ScreenHeight, int ImageWidth, int ImageHeight)
    {
    this.WebSite = WebSite;
    this.ScreenWidth = ScreenWidth;
    this.ScreenHeight = ScreenHeight;
    this.ImageHeight = ImageHeight;
    this.ImageWidth = ImageWidth;
    }

    public Bitmap GetBitmap()
    {
    WebPageBitmap Shot = new WebPageBitmap(this.WebSite, this.ScreenWidth, this.ScreenHeight);
    Shot.GetIt();
    Bitmap Pic = Shot.DrawBitmap(this.ImageHeight, this.ImageWidth);
    return Pic;
    }
    }

    class WebPageBitmap
    {
    WebBrowser MyBrowser;
    string URL;
    int Height;
    int Width;

    public WebPageBitmap(string url, int width, int height)
    {
    this.Height = height;
    this.Width = width;
    this.URL = url;
    MyBrowser = new WebBrowser();
    MyBrowser.ScrollBarsEnabled = false;
    MyBrowser.Size = new Size(this.Width, this.Height);
    }

    public void GetIt()
    {
    MyBrowser.Navigate(this.URL);
    while (MyBrowser.ReadyState != WebBrowserReadyState.Complete)
    {
    Application.DoEvents();
    }
    }

    public Bitmap DrawBitmap(int theight, int twidth)
    {
    Bitmap myBitmap = new Bitmap(Width, Height);
    Rectangle DrawRect = new Rectangle(0, 0, Width, Height);
    MyBrowser.DrawToBitmap(myBitmap, DrawRect);
    System.Drawing.Image imgOutput = myBitmap;
    System.Drawing.Image oThumbNail = new Bitmap(twidth, theight, imgOutput.PixelFormat);
    Graphics g = Graphics.FromImage(oThumbNail);
    g.CompositingQuality = CompositingQuality.HighSpeed;
    g.SmoothingMode = SmoothingMode.HighSpeed;
    g.InterpolationMode = InterpolationMode.HighQualityBilinear;
    Rectangle oRectangle = new Rectangle(0, 0, twidth, theight);
    g.DrawImage(imgOutput, oRectangle);
    try
    {

    return (Bitmap)oThumbNail;
    }
    catch (Exception ex)
    {
    return null;
    }
    finally
    {
    imgOutput.Dispose();
    imgOutput = null;
    MyBrowser.Dispose();
    MyBrowser = null;
    }
    }
    }

    }


    以下是调用方法,懒省事的方法,嘿嘿,赶时间就不说什么了,反正上面的抓取转换类已经写出来了,大家尽情的用异步,线程等方法自己玩吧!~

    string UrlPath;
    bool CaptureState = false;
    Guid guid;
    protected bool SaveOriginalPageToImage(Guid myGuid)
    {
    //使用guid 来命名
    guid = myGuid;
    if (this.CurrentPageAct == PageAct.Edit)
    {
    string PagePath = Request.Url.LocalPath;
    PagePath = PagePath.Replace("Operation", "Capture");

    UrlPath = PagePath + "?act=view&ProjectNo=" + _projectNo;

    Thread NewTh = new Thread(CaptureImage);
    NewTh.SetApartmentState(ApartmentState.STA);
    NewTh.Start();
    while (NewTh.ThreadState == ThreadState.Running)
    {
    }
    //返回截取状态
    return CaptureState;
    }
    return false;
    }

    /**//// <summary>
    /// 捕获屏幕
    /// </summary>
    /// <param name="UrlPath"></param>
    /// <returns></returns>
    public void CaptureImage()
    {
    try
    {
    string url = "http://" + Request.Url.Host + ":" + Request.Url.Port.ToString();
    url = url + UrlPath;

    GetImage thumb = new GetImage(url, 1024, 1200, 1024, 1200);
    System.Drawing.Bitmap x = thumb.GetBitmap();
    string FileName = DateTime.Now.ToString("yyyyMMddhhmmss");

    x.Save(Server.MapPath("~/Capture/SavePage") + "\\" + guid + ".jpg");
    CaptureState = true;
    }
    catch (Exception ex)
    {
    CaptureState = false;
    }
    }
  • 相关阅读:
    centos 卸载自带的apache
    静态方法绑定
    安装apc
    避免SSH连接因超时闲置断开
    svn使用安全问题
    接口类,和抽象类。
    function (规定参数必须为某个对象的实例)
    jquery 获取DIV边框的宽
    正则表达式(非捕获)
    Linux ftp服务器Proftp配置
  • 原文地址:https://www.cnblogs.com/love2wllw/p/1818659.html
Copyright © 2011-2022 走看看