-
C#实现网页截图功能
-
- using System;
- using System.Drawing;
- using System.Drawing.Drawing2D;
- using System.Drawing.Imaging;
- using System.Windows.Forms;
-
-
- namespace 网页截图
- {
- class Program
- {
- [STAThread]
- static void Main(string[] args)
- {
- string url = "http://www.yongfa365.com/";
- MyLib.GetImage thumb = new MyLib.GetImage(url, 1024, 4000, 1024, 4000);
- System.Drawing.Bitmap x = thumb.GetBitmap();
- string FileName = DateTime.Now.ToString("yyyyMMddhhmmss");
-
- x.Save(@"C:\" + FileName + ".jpg");
- Console.WriteLine("成功");
- Console.ReadKey();
- }
- }
- }
-
-
-
-
-
- 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;
- }
- }
- }
-
- }
-
相关阅读:
ASP.NET Core真实管道详解[2]:Server是如何完成针对请求的监听、接收与响应的【上】
ASP.NET Core真实管道详解[1]:中间件是个什么东西?
.NET Core下的日志(3):如何将日志消息输出到控制台上
“前.NET Core时代”如何实现跨平台代码重用 ——程序集重用
“前.NET Core时代”如何实现跨平台代码重用 ——源文件重用
.NET Core下的日志(2):日志模型详解
.NET Core下的日志(1):记录日志信息
ASP.NET Core 1.0中实现文件上传的两种方式(提交表单和采用AJAX)
ASP.NET Core管道深度剖析[共4篇]
ASP.NET Core管道深度剖析(4):管道是如何建立起来的?
-
原文地址:https://www.cnblogs.com/liufei88866/p/1762657.html
Copyright © 2020-2023
润新知