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