2012-07-09 2 views
0

C# Windows Form 응용 프로그램을 사용하여 로컬 HTML 파일을 비트 맵 이미지로 변환하려고합니다. 이를 위해 메모리 스트림을 사용하여 HTML 파일을 읽습니다. 그러나 비트 맵 객체에 메모리 스트림을 전달하면 "매개 변수가 유효하지 않습니다"라는 메시지가 나타납니다. 이하 HTML 파일을 비트 맵 이미지

샘플 코드

MemoryStream을

의 STM = MemoryStream을 새로운 (데이터)이고; 비트 맵 f_Bitmap = (비트 맵) Image.FromStream (stm);

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 
       } 
      } 

것은 당신의 URL과 IMAGE_URL 교체 :

+0

당신이 HTML 파일을 말할 때 http://stackoverflow.com/questions/7803201/capturing-webpage-as-image-in-c-ensuring-javascript-rendered-elements-are-visi –

+0

, 당신을 그것에 링크가있는 html 파일을 의미합니까? 또는 직접 링크 HTML 파일입니까? 예 : http://www.example.com/mypicture.png 데이터의 내용은 무엇입니까? – Tom

답변

-1

이 당신의 말을 HTML 파일만큼 작동이 이미지 파일에 대한 직접 링크입니다.

HTML 파일에 URL이 텍스트로 포함되어 있으면 구문 분석해야합니다. 이 파일이 로컬 인 경우

, 당신은 단순히 (이것은 WebRequest 클래스에하면 GetResponseStream 비슷합니다.) 로컬 파일의 스트림을 얻을 수있는하여 FileStream (또는을 FileReader)를 사용할 수 있습니다

당신은 질문이 있으면 알려주세요 .

희망이 있습니다.

이유 당신이 파일에서 HTML 텍스트를 누르면 수행 한 모든 스트림에 오류 원인을 던지고 및 FromStream이 데이터를 사용 때의 형식을 말한다

0

내 설명은 오류에 수신 데이터가 비트 맵이 아니거나 충분히 유용하지 않습니다.

0

HTML 파일의 내용을 비트 맵으로 저장하려면 비트 맵 객체에 바이트를 넣을 수 없습니다. 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 웹 호스트에서 호스팅되는 ASP.NET 웹 응용 프로그램에서이 작업을 수행 할 수 있습니까? – o365spo

관련 문제