2012-07-09 57 views
0

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

下面是示例代码

MemoryStream的STM =新的MemoryStream(数据); 位图f_Bitmap =(位图)Image.FromStream(stm);

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

谢谢。

+0

http://stackoverflow.com/questions/7803201/capturing-webpage-as-image-in-c-ensuring-javascript-rendered-elements-are-visi – 2012-07-09 13:18:35

+0

当你说HTML文件,你意思是一个有链接的html文件吗?或者是HTML文件的直接链接?例如http://www.example.com/mypicture.png 数据的内容是什么? – Tom 2012-07-09 13:19:11

回答

-1

只要这将作为你说的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)来获取本地文件的流(这是类似的GetResponseStream上的WebRequest。)

让我知道如果您有任何疑问。

希望它有帮助。

0

我的解释是错误的接收:

它之所以抛出错误原因你所做的就是从文件推HTML文本在流中,当FromStream使用数据,它说的格式该数据不是位图或不够好

0

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

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); 
     } 
    } 
+0

这可以通过Azure或Google Web主机上托管的ASP.NET Web应用程序完成吗? – o365spo 2013-04-27 15:37:44