首页 程序笔记 c#网页保存为图片

c#网页保存为图片

在 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 包。

1

站心网

在 C# 中,可以使用 System.Windows.Forms.WebBrowser 控件来实现网页转图片的功能。如果开发 ASP.NET Core..

为您推荐

BotSharp 基于 .NET 平台的开源 AI 聊天机器人框架

BotSharp 是一个开源的、基于 .NET 平台的 AI 聊天机器人框架,旨在简化构建智能对话系统的过程。它主要通过自然语言处理(NLP)技术,帮助开发者构建具备语言理解和对话能力的应用。BotSharp 提供了丰富的功能和扩..

5个高性能 .NET Core 图片处理库推荐

在使用 .NET Core 开发中,图片处理是一个常见需求,如图像缩放、裁剪、格式转换和添加水印等。以下是一些推荐的 .NET Core 图片处理库,它们功能强大且支持多种图像处理功能:1. ImageSharp简介:ImageSharp 是一个..

.NET C# 读取编辑.AVIF图片文件

在 .NET 中读取和编辑 .AVIF 图片文件需要特定的库支持,因为 System.Drawing 等内置功能不直接支持 AVIF 格式。目前可以通过以下方式在 .NET 中实现对 AVIF 文件的读取和编辑:方法一:使用 ImageMagick 的 .NET 封..

.NET C# SkiaSharp读取.AVIF图片文件报错

SkiaSharp 目前对 .AVIF 格式的支持可能依赖于具体的版本和底层库的配置。如果在使用 SkiaSharp 时尝试读取 .AVIF 文件报错,以下是一些可能的原因和解决方案:1. 检查 SkiaSharp 的版本SkiaSharp 的支持功能取决于..

常用的javascript网页数字滚动插件

在网页开发中,数字滚动效果广泛用于展示统计数据、计数器、动画化的数字效果等。以下是几款常用的 JavaScript 数字滚动插件:1. CountUp.js简介: CountUp.js 是一个轻量级的数字滚动插件,提供平滑的数字滚动动画效..

ideogram.ai 人工智能AI图片生成工具网站

Ideogram是一个由前Google Brain员工创立的AI绘画工具,它能够根据文本生成各种风格的图像,尤其擅长准确生成文本内容和抽象图标。Ideogram官网地址:https://ideogram.ai/loginIdeogram是由前Google Brain员工在202..

DrissionPage 基于Python的网页自动化工具

在数字化时代,网页自动化工具成为开发人员和数据分析师的得力助手。今天,我们将深入探索一款名为 DrissionPage 的全能网页自动化工具,它以其强大的功能和优雅的语法,成为 Python 程序员的新宠。什么是 DrissionP..

c# 输出base64图片格式

项目中要输出二维码图片,打算在接口中输出base64字符串。Base64编码在Web方面有很多应用,.Net Framework也提供了现成的功能类(System.Convert)用于将二进制数据转换为Base64字符串。先使用ThoughtWorks.QRCode生成..

使用htmlagilitypack+xpath抓取网页内容示例

本文使用htmlagilitypack+xpath抓取网页内容示例,用简单的例子展示如何使用htmlagilitypack抓取网页,可以用来做数据采集等功能。用htmlagilitypack+xpath抓取网页内容示例源码下载首先在nuget中获取htmlagilitypac..

c#无损压缩图片代码,可设置压缩质量

之前写过一篇文章《使用htmlagilitypack+xpath抓取网页内容示例》,提到使用htmlagilitypack抓取网页信息。想做一个网络爬虫,但是想把网页上的图片也下载到本地,于是写了下载图片的功能。但是第三方网站上的图片大..

.NET Core SkiaSharp替代System.Drawing的用法

在.NET 6中,微软官方建议把 System.Drawing.Common迁移到SkiaSharp库。因为System.Drawing.Common被设计为Window 技术的精简包装器,因此其跨平台实现欠佳。SkiaSharp是一个基于谷歌的Skia图形库(Skia.org)的用于..

.NET Core c#使用SkiaSharp压缩裁切图片去除水印

在.NET 6中,微软官方建议使用SkiaSharp库进行图片操作。本文主要介绍使用SkiaSharp库压缩裁切图片去除水印。做图片压缩和去除水印,主要是为了在网站中使用图片。比如抓取某网站的文章和图片发布到自己的网站中。但..

.Net Core HttpClient读取GB2312网页乱码

.NET Core使用HttpClinet抓取网页,使用Encoding.UTF8.GetString(arr)方法获取网页内容时中文会变成乱码。但是如果改为Encoding.GetEncoding("gb2312").GetString()方法的话会报错:'gb2312' is not a supported enc..

.NET Core c#使用SkiaSharp压缩图片

在.NET 6中,微软不建议使用System.Drawing.Common。因为System.Drawing.Common被设计为Window 技术的精简包装器,因此其跨平台实现欠佳。官方建议使用SkiaSharp库进行图片操作。.NET 6 c#使用SkiaSharp压缩图片是比..

Blazor使用内存中状态容器服务保存和验证登陆状态

想用Blazor做一个简单的登录验证。模式是render-mode="ServerPrerendered"。在登录页面登录成功后需要保存类似.NET MVC网站的服务端session的状态。网上一些简单的做法是登录成功后把用户信息存在LocalStorage或者Se..

c# HttpClient下载图片

c# .NET Core中使用WebClient下载图片会提示已经弃用,推荐使用HttpClient。那么.NET core中如何使用HttpClient下载图片呢?在C#中使用HttpClient下载图片,下面是代码示例:usingSystem;usingSystem.Net.Http;using..

c#使用HtmlAgilityPack编辑html并保存

最近发现新博客里的图片忘记加alt属性了,为了搜索引擎优化决定为所有的文章内的图片添加alt属性,属性值为文章标题。如果用正则表达式匹配比较头疼,还要考虑添加alt属性后保存。所以想到了抓取网页时使用的HtmlAgi..

使用C#为图片去除水印

在C#中,你可以使用图像处理库来为图片去除水印。以下是一个基本的示例代码,使用AForge.NET图像处理库来去除图片中的水印:首先,确保你已经安装了AForge.NET库。你可以在Visual Studio的NuGet包管理器中搜索并安装..

谷歌的AMP网页和AMP自动广告是什么?

最近在玩谷歌广告Google Adsense,看到谷歌有个AMP自动广告,查看了他的介绍觉得很有意思。谷歌广告联盟的官方介绍是这样的:AMP 自动广告会自动将 AdSense 自动广告放置在您的 AMP 网页上。在添加 AMP 自动脚本和广..

.NET使用ZXing.Net库生成二维码图片

在.NET中生成二维码图片可以使用第三方库来简化这个过程。下面以使用ZXing.Net库为例,演示如何在.NET中生成二维码图片:安装ZXing.Net库:在你的项目中使用NuGet Package Manager或者在项目文件中手动添加以下依赖..

发表回复

返回顶部