c#网页保存为图片
2024-09-16
35
在 C# 中,可以使用 System.Windows.Forms.WebBrowser 控件来实现网页转图片的功能。如果开发 ASP.NET Core 应用程序,可以使用库来实现类似的功能,比如 PuppeteerSharp 或其他类似的工具。
以下是一个使用WebBrowser 控件来实现网页转图片的功能的示例:
using System;
using System.Drawing;
using System.Windows.Forms;
public class WebPageToImageConverter
{
public static void ConvertToImage(string url, string savePath)
{
using (WebBrowser webBrowser = new WebBrowser())
{
webBrowser.ScrollBarsEnabled = false;
webBrowser.ScriptErrorsSuppressed = true;
webBrowser.Navigate(url);
webBrowser.DocumentCompleted += (sender, e) =>
{
// 等待页面加载完毕后截图
webBrowser.ClientSize = new Size(webBrowser.Document.Body.ScrollRectangle.Width, webBrowser.Document.Body.ScrollRectangle.Height);
Bitmap bitmap = new Bitmap(webBrowser.Width, webBrowser.Height);
webBrowser.DrawToBitmap(bitmap, new Rectangle(0, 0, webBrowser.Width, webBrowser.Height));
bitmap.Save(savePath, System.Drawing.Imaging.ImageFormat.Png);
bitmap.Dispose();
};
while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
}
}
}
使用方法:
WebPageToImageConverter.ConvertToImage("http://example.com", "output.png");
上述代码将打开一个隐藏的 WebBrowser 控件,加载指定的网页,然后等待页面加载完毕后将其转为图片并保存到指定路径。请注意,这段代码需要在具有 UI 上下文的环境中运行,比如 Windows Forms 应用程序。
PuppeteerSharp 是一个 .NET 版本的 Puppeteer 库,它可以用来模拟浏览器行为并进行网页截图等操作。以下是一个示例代码,演示了如何使用 PuppeteerSharp 将网页保存为图片:
首先,需要在你的项目中安装 PuppeteerSharp 包。可以在 NuGet 包管理器中搜索并安装 PuppeteerSharp。
using PuppeteerSharp;
using System;
using System.Threading.Tasks;
public class WebPageToImageConverter
{
public static async Task ConvertToImage(string url, string savePath)
{
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
using (var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = true
}))
using (var page = await browser.NewPageAsync())
{
await page.GoToAsync(url);
await page.ScreenshotAsync(savePath);
}
}
}
然后,在代码中调用这个方法来将网页保存为图片:
await WebPageToImageConverter.ConvertToImage("http://example.com", "output.png");
这个示例使用 PuppeteerSharp 打开一个无头浏览器,然后访问指定的网页并截取屏幕快照,最后将图片保存到指定路径。
需要在异步方法中调用这个操作,并在合适的地方处理可能的异常。另外,确保在项目中引用了 PuppeteerSharp 包。
更新于:2个月前赞一波!
相关文章
- .NET C# EntityFramework(EF)连接SQLite代码示例
- .NET9 C# 13 有哪些新特性?
- C#中的String和StringBuilder的区别
- .NET C#中的IEnumerable和IEnumerator的区别
- DrissionPage 基于Python的网页自动化工具
- C# Const 和 ReadOnly的区别
- C# 使用Barrier进行多线程同步
- C#发送邮件代码简洁示例(附源码下载)
- C# Word转换成Pdf的方法
- c#使用MongoDB开发LBS应用
- hprose for C#使用教程
- c#实现与Java无差异的GZip压缩和GZip解压缩
- .NET Core c#使用SkiaSharp压缩裁切图片去除水印
- c# decimal保留2位小数 并向下舍入
- .NET Core c#使用SkiaSharp压缩图片
- C#复制文件到指定文件夹
- c#获取枚举的Description
- c#读取pdf里的表格
- c# HttpClient下载图片
- c#使用HtmlAgilityPack编辑html并保存
文章评论
评论问答