如何将网页转换为图像?

2023-11-30

我想将 *.aspx (HTML) 页面(用户界面)转换为图像,例如 JPEG。 我正在使用下面的代码

Protected Sub btnGet_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGet.Click
        saveURLToImage("http://google.co.in")
End Sub

Private Sub saveURLToImage(ByVal url As String)
        If Not String.IsNullOrEmpty(url) Then
            Dim content As String = ""

            Dim webRequest__1 As System.Net.WebRequest = WebRequest.Create(url)
            Dim webResponse As System.Net.WebResponse = webRequest__1.GetResponse()
            Dim sr As System.IO.StreamReader = New StreamReader(webResponse.GetResponseStream(), System.Text.Encoding.GetEncoding("UTF-8"))
            content = sr.ReadToEnd()
            'save to file
            Dim b As Byte() = Convert.FromBase64String(content)
            Dim ms As New System.IO.MemoryStream(b, 0, b.Length)
            Dim img As System.Drawing.Image = System.Drawing.Image.FromStream(ms)
            img.Save("c:\pic.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)

            img.Dispose()
            ms.Close()
        End If
    End Sub

但我在行中收到错误“Base-64 字符串中的无效字符” Dim b As Byte() = Convert.FromBase64String(content)


您无法使用 webRequest 获取页面的渲染图像,而只能获取 HTML 代码。

要生成图像,请遵循以下代码(直接从这个帖子)

public Bitmap GenerateScreenshot(string url)
{
    // This method gets a screenshot of the webpage
    // rendered at its full size (height and width)
    return GenerateScreenshot(url, -1, -1);
}

public Bitmap GenerateScreenshot(string url, int width, int height)
{
    // Load the webpage into a WebBrowser control
    WebBrowser wb = new WebBrowser();
    wb.ScrollBarsEnabled = false;
    wb.ScriptErrorsSuppressed = true;
    wb.Navigate(url);
    while (wb.ReadyState != WebBrowserReadyState.Complete) { Application.DoEvents(); }


    // Set the size of the WebBrowser control
    wb.Width = width;
    wb.Height = height;

    if (width == -1)
    {
        // Take Screenshot of the web pages full width
        wb.Width = wb.Document.Body.ScrollRectangle.Width;
    }

    if (height == -1)
    {
        // Take Screenshot of the web pages full height
        wb.Height = wb.Document.Body.ScrollRectangle.Height;
    }

    // Get a Bitmap representation of the webpage as it's rendered in the WebBrowser control
    Bitmap bitmap = new Bitmap(wb.Width, wb.Height);
    wb.DrawToBitmap(bitmap, new Rectangle(0, 0, wb.Width, wb.Height));
    wb.Dispose();

    return bitmap;
}

以下是上述方法的一些用法示例:

// Generate screenshot of a webpage at 1024x768 resolution
Bitmap screenshot = GenerateScreenshot("http://pietschsoft.com", 1024, 768);

// Generate screenshot of a webpage at the webpage's full size (height and width)
screenshot = GenerateScreenshot("http://pietschsoft.com");

// Display screenshot in PictureBox control
pictureBox1.Image = thumbnail;

/*
// Save screenshot to a File
screenshot.Save("screenshot.png", System.Drawing.Imaging.ImageFormat.Png);
*/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将网页转换为图像? 的相关文章

  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • 无法访问本地 Docker 容器上的 Asp.Net Core

    我在 asp net core 中创建了一个应用程序 并创建了一个 dockerfile 来生成本地映像并运行它 FROM microsoft dotnet latest COPY app WORKDIR app RUN dotnet re
  • HTML 属性 bgcolor 已弃用:用什么代替?

    VStudio ASP NET 给出以下消息 Attribute bgcolor is considered outdated A newer construct is recommended 推荐的结构是什么 bgcolor是在一个 td
  • 如何使用 ASP.NET Web API 生成 ATOM 和 RSS2 提要?

    需要采取哪些步骤来调整 ASP NET Web API 的默认 XML 输出以生成 ATOM 和 RSS2 提要 您将需要实现自定义 MediaTypeFormatter 您可能想查看 Filip 的博客文章用于 ASP NET WebAP
  • MVC 操作过滤器和多线程

    我目前遇到了操作过滤器的线程问题 在我的应用程序上 我使用 ActionFilter 来执行每个操作的跟踪 此跟踪将提供统计信息 例如调用的持续时间 并记录参数被派往行动 实际的跟踪实现 由其他团队完成 使用 IDisposable 对象
  • 使用 DependencyResolver 通过 MVC 3 进行控制器实例化时出错

    我正在使用 MVC 3 并在应用程序启动时使用以下代码 UnityContainer container new UnityContainer new UnityMappings container DependencyResolver S
  • 获取GridView中选定行的索引

    我想使用复选框获取从 gridview 选择的行 复选框是这样的
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • 保护 ASP.NET 网站中 Elmah RSS 源的安全

    我遵循了这个问题的答案在 ASP NET 网站中保护 Elmah 的安全 https stackoverflow com questions 1245364 securing elmah in asp net website限制对 elma
  • ASP.NET:如何删除所有用户的所有会话变量?

    我们有 ASP NET 应用程序 想要删除所有用户的所有会话中的所有会话变量 我的意思是不要仅使用以下命令从当前会话中删除会话变量 Session Clear or Session Abandon 我们还需要清除其他用户会话中的会话变量吗
  • 将 MVC 站点部署到 IIS 会导致找不到默认共享部分视图

    我有一个可以在本地 IIS 上完美运行的网站 我的所有页面都使用默认的共享部分视图 这称为预期 Layout cshtml 该视图放置在我的共享文件夹中 这可以在这里看到 正如我所期望的那样 这非常有效 不过 我现在发布了我的网站 然后 我
  • 通过 ASP.NET 网站管理员工具获得 Asp.Net 会员资格

    我使用 aspnet regsql 创建了一个数据库 该数据库是在 sql server 2008 中创建的 而不是在我的项目中的数据文件夹中创建的 我需要手动将其移动到该文件夹 吗 接下来 在网站管理工具中 我转到提供商部分并单击 测试
  • 如何禁用“您是否只想查看安全传送的网页内容”警告?

    我的网站有完整的 https 及其使用外部 jquery 资源 即 http 在 IE 8 中 当我重定向网站时 它给了我 您只想查看安全传送的网页内容 警告 如何避免这种情况 有没有可用的脚本可以解决这个问题 提前致谢 似乎有两个可能的问
  • 在操作之外执行异步操作 asp.net mvc

    我希望能够在每个请求上从云数据库加载用户 并使用 asp net mvc 在控制器中的请求上提供该用户 问题是当前框架不支持从操作过滤器执行异步操作 所以 OnActionExecuting OnAuthorization 方法不允许我这样
  • 如何从源视图 (aspx) 中的 C# 中为按钮事件添加事件处理程序

    为 HTML 源视图中的按钮创建代码隐藏 webforms 事件处理程序的最简单方法是什么 在 VB NET 中 切换到代码隐藏页面并使用顶部的对象和事件组合框来选择和创建非常容易 在 C 中 这些都缺失了 我真的不喜欢设计视图 确保 属性
  • ASP.NET DropDownList SelectedValue 属性未立即设置

    我有一个 ASP NET Web 表单 在其中使用 DropDownList 控件来允许用户选择一个项目并查看相关结果 由于某种原因 当我设置 DropDownList 的 SelectedValue 属性时 它设置的值不会立即可用 这是我
  • ASP.NET 会话状态和多个工作进程

    我需要了解一些有关 ASP NET 会话状态的信息 因为它适用于 IIS 7 和 ASP net 3 5 如果应用程序配置为使用进程内会话状态 那么如果有多个工作进程 该应用程序是否可以正常工作 换句话说 工作进程是否共享会话状态 IIS
  • 对齐 GridView 中的行值

    我需要在 asp net 3 5 中右对齐 gridview 列中的值 我怎样才能做到这一点
  • App_Data 文件夹内的数据库与连接到 SQL Server 的数据库有什么区别?

    我是 NET 新手 在开始学习 ASP NET MVC2 框架时 我发现您可以在 App Data 文件夹中创建一个 mdf 文件并连接到它 或者您可以连接到 SQL Server 这些与数据库交互的方法有什么区别 一种相对于另一种的优点
  • 当存在打开的 ASP.NET 4.5 Websocket 时,IIS 应用程序池无法回收

    我遇到了一个问题 可以通过以下方式复制 您需要 IIS8 因此必须在 Windows 8 或 Windows Server 2012 R2 上 在 IIS 管理器中创建一个新网站 例如在端口 8881 上的 TestWs 指向一个新文件夹

随机推荐

  • 使用 DOMDocument 从网站抓取所有图像

    我基本上想要得到ALL使用 DOMDocument 的任何网站中的图像 但由于某些我还不知道的原因 我什至无法加载我的 html url http
  • Elasticsearch 未在浏览器中运行

    我已经在 Ubuntu 中下载了 Elasticsearch 8 1 安装成功后 当我执行 curl u elastic https 127 0 0 1 9200 k 它显示了预期的弹性搜索响应 但当我击中http 127 0 0 1 92
  • 如何使用 Fiddler 将 XML POST 到 ASP.NET WebAPI

    给定以下 ASP NET WebAPI 我尝试使用 Fiddler 发送测试 POST 但无法让它工作 无论我发送什么 我总是只看到没有数据发送到服务信息 Imports System Web Http Imports System Net
  • SQLITE 将大量行转置为列

    我有一个这样订购的数据库 ID Subject Value 1 Subj1 Val1 1 Subj2 Val2 2 Subj1 Val3 2 Subj5 Val4 等等 ID 数以千计 受试者数以万计 我想找到这个矩阵的转置 我怎么做 如果
  • 从 mcrypt_decrypt 到 openssl_decrypt

    我有一个问题 我想用 open ssl 解密替换对 mcrypt 的函数调用 但输出是混合的 这是 mcrypt 实现 效果很好 decrypted trim mcrypt decrypt MCRYPT RIJNDAEL 128 subst
  • 在 JPA 上映射 Oracle XMLType (EclipseLink)

    我们的项目有一些特殊要求 其中之一是从 Oracle 10g 数据库的 XMLType 数据库列获取数据 我们找到了一个使用 JDBC 的简单解决方案 但它会使应用程序有点混乱 因为所有数据访问都是通过 JPA 完成的 使用的实现是 Ecl
  • 使用 HTML5 创建音频可视化工具

    我正在尝试使用我在网上找到的示例对在线广播流使用音频可视化这一页 然而 与发现的问题类似这个帖子 我的音频文件 即使使用本地文件进行测试 就是没有声音 当然可视化也没有任何作用 我的 HTML 如下
  • 在 Firefox 和 Chrome 中呈现 HTML

    div style height 20 width 70 div div gt div style height 20 width 30 div 在 Chrome 中 这两个部分位于同一行 但是两个div之间有一个小差距 但在 Firefo
  • 根据多个数据块的列值改变点颜色 gnuplot

    我的问题非常类似于this其一 从中我学到了很多东西 但是 我正在使用多个数据块 如下所示 1 2 3 4 5 6 7 8 0 4 3 0 4 5 7 2 3 0 4 5 0 5 6 7 我将它们绘制如下 plot file txt ind
  • 为什么 Python 创建的 MD5 哈希与在 shell 中使用 echo 和 md5sum 创建的 MD5 哈希不同?

    Python MD5 哈希值与 shell 上的 md5sum 命令创建的哈希值不同 为什么 gt gt gt import hashlib gt gt gt h hashlib md5 gt gt gt h update mystring
  • SSIS版本检查

    这是我在这个论坛上的第一篇文章 我一直坚持使用 Microsoft SSIS 软件包 但我真的不知道如何打败它 我已经提到了 SSIS 包文件 我尝试在 SQL Server 2005 上使用 Business Intelligence D
  • 在 contenteditable div 中设置插入符位置

    Intro 当编辑 contenteditable DOM 对象的内容时 不同的浏览器有不同的行为 例如 Firefox 18 0 创建一个新段落 p 或换行符 br 在某些情况下 Chrome 24 会创建一个 p div 为了解决这个问
  • 如何修复 iOS 12 Safari Cors 预检错误?

    我试图更好地理解 COR 因为我们的 Web 应用程序的一些用户抱怨说 自从他们升级到 iOS 12 后 他们收到了预检错误 来自网络检查器的错误 Error Preflight response is not successful Err
  • 导出可运行的 JAR 文件不支持 UTF-8 编码 - Java Eclipse

    我使用 eclipse IDE 制作了这个小型 Java 程序 我已将工作区设置为支持 UTF 8 并且程序在从 eclipse 执行时运行良好 该程序的一部分是将一些数据写入文件 需要 UTF 8 因为它是阿拉伯语 我需要导出一个可运行的
  • java.io.IOException:找不到 Main [动态功能模块] 的 PROCESSED_RES 输出

    将动态模块添加到已有 6 种风格的多模块项目中 出现这个错误 ERROR Unable to resolve dependency for dynMod debug compileClasspath Could not resolve pr
  • 如何检查指针是否指向数组或单个 int 或 char

    我想知道一个指针是否指向一个array或单身integer 我有一个需要两个指针的函数 int and char 作为输入并判断指针是否指向array或单身integer pointer pointer 4 pointer1 pointer
  • 如何导入 XML 表 Google Sheets

    所以我有一个谷歌表 我想通过 ergast com API 导入 F1 排位赛和比赛结果 我只需要表中的驱动程序和位置信息 但如果更容易的话 我很乐意导入整个表 我尝试过 IMPORTHTML IMPORTFEED IMPORTXML 但无
  • 使用网络抓取提供数据框

    我正在尝试将一些刮取的值附加到数据框中 我有这个代码 import time import requests import pandas import pandas as pd from bs4 import BeautifulSoup f
  • 使用 dotnetzip 压缩文件,打开时文件已损坏

    我从字节数组在控制器中创建了一个 zip 文件 并将该 zip 文件作为文件结果返回 当我下载 zip 文件并解压该文件时 它已损坏 我这样做 byte fileBytes array MemoryStream fileStream new
  • 如何将网页转换为图像?

    我想将 aspx HTML 页面 用户界面 转换为图像 例如 JPEG 我正在使用下面的代码 Protected Sub btnGet Click ByVal sender As Object ByVal e As System Event