【问题标题】:HTML file to Bitmap imageHTML 文件到位图图像
【发布时间】:2012-07-08 21:32:51
【问题描述】:

我正在尝试使用 C# Windows 窗体应用程序将本地 HTML 文件转换为位图图像。为此,我正在使用内存流读取 HTML 文件。但是在将内存流传递给 Bitmap 对象后,它说“参数无效”。

下面是示例代码

MemoryStream stm = new MemoryStream(data); 位图 f_Bitmap = (Bitmap)Image.FromStream(stm);

请提供如何将 HTML 文件转换为位图图像的解决方案。

谢谢。

【问题讨论】:

标签: c#


【解决方案1】:

您始终可以使用 WebBrowser 对象(阅读更多 here)。

    public void WBCapture()
    {
        WebBrowser wb = new WebBrowser();
        wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);

        wb.ScrollBarsEnabled = true;
        wb.Width = 800;
        wb.Height = 600;
        wb.DocumentText = @"<b>Hello</b> <i>World</i>!!!";
        // Or you can navigate to:
        // wb.Navigate("http://mydocmentsurl.com");
    }

    void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        WebBrowser wb = (WebBrowser)sender;

        using (Graphics graphics = wb.CreateGraphics())
        using (Bitmap bitmap = new Bitmap(wb.Width, wb.Height, graphics))
        {
            Rectangle bounds = new Rectangle(0, 0, bitmap.Width, bitmap.Height);
            wb.DrawToBitmap(bitmap, bounds);
            bitmap.Save(@"C:\caputre.png", ImageFormat.Png);
        }
    }

【讨论】:

  • 这可以通过托管在 Azure 或 Google 网络主机上的 ASP.NET Web 应用程序来完成吗?
【解决方案2】:

我的解释是你收到的错误:

它抛出错误的原因是你所做的只是将 HTML 文本从文件推送到流中,当 FromStream 使用数据时,它说数据的格式不是位图或不够好

【讨论】:

    【解决方案3】:

    如果要将 HTML 文件的内容保存为位图,则不能只将字节放入位图对象中。您需要使用 WebBrowser 对象并手动绘制它。 Here 是一篇概述它的文章。

    【讨论】:

      【解决方案4】:

      只要您所说的 HTML 文件是图像文件的直接链接,这将起作用:

                  var request = (HttpWebRequest) WebRequest.Create(IMAGE_URL);
      
                  using (var stream = request.GetResponse().GetResponseStream())
                  {
                      using (var image = Image.FromStream(stream))
                      {
                          var bitmap = new Bitmap(image);
                          //use or return bitmap, image will automatically get disposed
                      }
                  }
      

      将 IMAGE_URL 替换为您的网址。

      如果 HTML 文件包含文本形式的 URL,那么您需要将其解析出来。

      如果此文件是本地文件,您可以简单地使用 FileStream(或 FileReader)来获取本地文件的流(这类似于 WebRequest 上的 GetResponseStream。)

      如果您有任何问题,请告诉我。

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 2010-09-08
        • 2011-05-08
        • 1970-01-01
        • 1970-01-01
        • 2014-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-29
        相关资源
        最近更新 更多