1

Webページから画像をコピーしてローカルに保存するプログラムがあります。特定のWebページでは、保存された画像は完全に黒い画面です。最初に私はそれが良い写真を撮らなかったコードの問題だと思いました。そこで調査を始めました。それらのページに手動で移動して画像をコピーしようとしましたが(右クリックして画像をコピー)、それでも黒い画像が返されました。誰かがこれをコードからバイパスする方法を教えてもらえますか?これが現在のコードで、ほとんどの写真で正常に機能します

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");
                }
            }
        }
4

1 に答える 1

1

その画像の背景は透明です。
したがって、ほとんどのピクセルが完全に透明であることを除いて、イメージ内のすべてのピクセルは黒です。

.jpgファイルは透明度をサポートしていないため、保存すると黒い.jpg画像になります。

ファイルとして保存すると.png(透過性をサポートします)、動作するはずです。

于 2012-10-14T12:59:31.417 に答える