我有一个程序可以从网页复制图像并在本地保存。在某些网页上,保存的图像是完全黑屏。首先,我认为这是代码中的一个问题,没有拍出好照片。所以我开始调查。我手动去那些页面并尝试复制图像(右键单击,复制图像),它仍然返回一个黑色图像。有人能告诉我如何从代码中绕过这个?这是当前的代码,适用于大多数图片
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 :(得分:1)
该图像具有透明背景 因此,图像中的每个像素都是黑色的,除了大多数像素是完全透明的。
由于.jpg
个文件不支持透明度,因此将其保存为.jpg
会导致黑色图像。
如果将其保存为.png
文件(确实支持透明度),它应该有效。