2012-10-14 3 views
1

웹 페이지에서 이미지를 복사하여 로컬에 저장하는 프로그램이 있습니다. 특정 웹 페이지에서 저장된 이미지는 완전히 검은 색 화면입니다. 처음에는 코드에서 좋은 그림을 찍지 않은 것이 문제라고 생각했습니다. 그래서 조사를 시작했습니다. 난 그 페이지에 수동으로 가서 (오른쪽 클릭, 이미지 복사) 이미지를 복사하려고했는데 여전히 검은 이미지를 반환했습니다. 누군가가 코드에서 이것을 무시할 수있는 방법을 말해 줄 수 있습니까? 다음은 현재 코드입니다. 대부분의 그림에서 잘 작동합니다.페이지에서 이미지를 복사하면 검은 색 이미지가됩니다.

IHTMLDocument2 doc = (IHTMLDocument2)webBrowser1.Document.DomDocument; 
     IHTMLControlRange imgRange = (IHTMLControlRange)((HTMLBody)doc.body).createControlRange(); 

     foreach (IHTMLImgElement img in doc.images) 
     { 
      if (img.alt != "my image alt") 
       continue; 
      imgRange.add((IHTMLControlElement)img); 

      imgRange.execCommand("Copy", false, null); 

      using (Bitmap bmp = (Bitmap)Clipboard.GetDataObject().GetData(DataFormats.Bitmap)) 
      { 
       if (bmp != null) 
       { 
        bmp.Save("testimg.jpg"); 
       } 
      } 
     } 
+0

어떤 페이지입니까? Flash가 관련되어 있습니까? – SLaks

+0

@SLaks 아니오 플래시가 없습니다. 이 웹 페이지에서 http://bestsoftware2download.com/submit.php....the captcha 이미지를 예를 들면 .... 브라우저에서 직접 복사 붙여 넣기를 시도하십시오. –

+0

이미지의 배경이 투명합니다. – SLaks

답변

1

이미지의 배경이 투명합니다.
따라서 대부분의 이미지가 완전히 투명하다는 점을 제외하면 이미지의 모든 픽셀은 검은 색입니다.

.jpg 파일은 투명도를 지원하지 않으므로 .jpg으로 저장하면 검은 색 이미지가됩니다.

투명도를 지원하는 .png 파일로 저장하면 정상적으로 작동합니다.

+0

시도한 bmp.Save (경로, ImageFormat.Png), 이미지가 여전히 검정입니다. 또한 성공없이 ImageFormat 클래스의 모든 이미지 형식을 시도했습니다. 또한 ImageCodecInfo 클래스를 살펴 보았지만 제대로 작동하지 않았습니다. –

+0

@CristiM : 그러면 복사 작업에 문제가있을 수 있습니다. Internet Explorer에서 투명성을 복사하는 데 문제가있었습니다. – SLaks

+0

당신은 이것을하기 위해 winform에서 webBrowser 컨트롤을 수정할 수있는 방법을 알고 있습니까 ?? Btw, 결과없이 크롬에서 이미지를 Photoshop으로 복사 해 보았습니다. 아니면 내가 사용할 수있는 다른 제안? –

관련 문제