2012-10-14 79 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 nope不涉及Flash。 http://bestsoftware2download.com/submit.php從本網頁的驗證碼圖片例如....嘗試直接從瀏覽器複製粘貼 –

+0

該圖像具有透明背景。 – SLaks

回答

1

該圖像具有透明背景。
因此,圖像中的每個像素都是黑色的,但其中大部分都是完全透明的。

由於.jpg文件不支持透明度,因此將其保存爲.jpg會導致黑色圖像。

如果將它保存爲.png文件(它確實支持透明度),它應該可以工作。

+0

試過bmp.Save(path,ImageFormat.Png),圖像仍然是黑色的。還嘗試了ImageFormat類中的所有圖像格式,但都沒有成功。我也看着ImageCodecInfo類,但沒有設法使其工作 –

+0

@CristiM:然後這可能是一個複製操作的問題;我無法讓IE瀏覽器複製透明度。 – SLaks

+0

你知道我可以用winform修改webBrowser控件的任何方式來做到這一點?順便說一句,我試圖從鉻複製到Photoshop的圖像,沒有結果。或者我可以使用的其他建議? –