C# GDI+;中发生一般性错误;
我正试图从网页上获取一些数据和图片。我可以拍摄数据和一些照片,但有时拍摄时会出错 错误是= System.Drawing-->无效保存(System.String、System.Drawing.Imaging.ImageCodeInfo、System.Drawing.Imaging.EncoderParameters) GDI+中发生一般性错误 我的错在哪里 我的代码是:C# GDI+;中发生一般性错误;,c#,C#,我正试图从网页上获取一些数据和图片。我可以拍摄数据和一些照片,但有时拍摄时会出错 错误是= System.Drawing-->无效保存(System.String、System.Drawing.Imaging.ImageCodeInfo、System.Drawing.Imaging.EncoderParameters) GDI+中发生一般性错误 我的错在哪里 我的代码是: if (!added) { i = 0; object[] array = new object[6];
if (!added)
{
i = 0;
object[] array = new object[6];
HtmlElementCollection aad = webBrowser2.Document.GetElementsByTagName("p");
array[3] = aad[4].InnerHtml;
array[1] = aad[3].InnerHtml;
array[2] = aad[6].InnerHtml;
aad = webBrowser2.Document.GetElementsByTagName("h1");
array[0] = aad[0].InnerHtml;
aad = webBrowser2.Document.GetElementsByTagName("span");
array[4] = aad[3].InnerHtml.Replace("<BR>", "\n");
array[5] = webBrowser2.Document.Url.ToString();
timer1.Enabled = false;
added = true;
get = true;
HtmlElementCollection imgs = webBrowser2.Document.Images;
if (Directory.Exists(Convert.ToString(array[1])))
{
}
else
{
Directory.CreateDirectory("" + array[1]);
}
IHTMLDocument2 doc = (IHTMLDocument2)webBrowser2.Document.DomDocument;
IHTMLControlRange imgRange = (IHTMLControlRange)((HTMLBody)doc.body).createControlRange();
var clip = Clipboard.GetDataObject();
int iaa = 0;
foreach (IHTMLImgElement img in doc.images)
{
try
{
if (img.nameProp.Contains("zoom"))
{
imgRange.add((IHTMLControlElement)img);
imgRange.execCommand("Copy", false, null);
using (Bitmap bmp = (Bitmap)Clipboard.GetDataObject().GetData(DataFormats.Bitmap))
{
try
{
bmp.Save(@"" + Application.StartupPath + "\\" + array[1] + "\\" + img.nameProp, ImageFormat.Jpeg);
richTextBox2.Text += img.nameProp + " Saved " + array[1];
iaa++;
}
catch
{
bmp.Save(@"" + Application.StartupPath + "\\" + array[1] + "\\" + img.nameProp, ImageFormat.Bmp);
richTextBox2.Text += img.nameProp + " Saved as bmp due error for " + array[1]+"\n";
iaa++;
}
}
}
}
catch(Exception ex)
{
HtmlElementCollection aads = webBrowser2.Document.GetElementsByTagName("p");
richTextBox2.Text += ex.Source + "---->" + ex.TargetSite + "\n" + ex.Message + "\n" + ex.InnerException + "\n" + aads[3].InnerHtml + "\n"+img.nameProp+"\n";
}
}
a.Tables[0].Rows.Add(array);
Clipboard.SetDataObject(clip);
richTextBox2.Text += "Product " + array[1] + " Succesfully Added with " + (iaa-1).ToString() + " images \n ";
}
如果(!已添加)
{
i=0;
object[]数组=新对象[6];
HtmlElementCollection aad=webBrowser2.Document.GetElementsByTagName(“p”);
数组[3]=aad[4].InnerHtml;
数组[1]=aad[3].InnerHtml;
数组[2]=aad[6].InnerHtml;
aad=webBrowser2.Document.GetElementsByTagName(“h1”);
数组[0]=aad[0].InnerHtml;
aad=webBrowser2.Document.GetElementsByTagName(“span”);
数组[4]=aad[3]。InnerHtml.Replace(“
”,“\n”);
数组[5]=webBrowser2.Document.Url.ToString();
timer1.Enabled=false;
添加=真;
得到=真;
HtmlElementCollection imgs=webBrowser2.Document.Images;
if(Directory.Exists(Convert.ToString(数组[1]))
{
}
其他的
{
CreateDirectory(“+array[1]);
}
IHTMLDocument2doc=(IHTMLDocument2)webBrowser2.Document.DomDocument;
IHTMLControlRange imgRange=(IHTMLControlRange)((HTMLBody)doc.body.createControlRange();
var clip=Clipboard.GetDataObject();
int iaa=0;
foreach(文档图像中的IHTMLImgElement图像)
{
尝试
{
如果(img.nameProp.Contains(“缩放”))
{
imgRange.add((IHTMLControlElement)img);
imgRange.execCommand(“复制”,false,null);
使用(位图bmp=(位图)剪贴板.GetDataObject().GetData(DataFormats.Bitmap))
{
尝试
{
bmp.Save(@“+Application.StartupPath+“\\”+array[1]+“\\”+img.nameProp,ImageFormat.Jpeg);
richTextBox2.Text+=img.nameProp+“已保存”+数组[1];
iaa++;
}
抓住
{
保存(@“+Application.StartupPath+“\\”+array[1]+“\\”+img.nameProp,ImageFormat.bmp);
richTextBox2.Text+=img.nameProp+“由于“+数组[1]+”\n”的错误而另存为bmp”;
iaa++;
}
}
}
}
捕获(例外情况除外)
{
HtmlElementCollection aads=webBrowser2.Document.GetElementsByTagName(“p”);
richTextBox2.Text+=ex.Source+“--->”+ex.TargetSite+“\n”+ex.Message+“\n”+ex.InnerException+“\n”+aads[3]。InnerHtml+“\n”+img.nameProp+“\n”;
}
}
a、 表[0]。行。添加(数组);
剪贴板.SetDataObject(clip);
richTextBox2.Text+=“Product”+数组[1]+”成功添加“+(iaa-1).ToString()+”images\n”;
}
有时它会出错
分析这种情况何时发生。如果同一图像文件总是出现这种情况,请使用浏览器下载并检查图像。例如,如果它是随机发生的,则可能是图像尚未加载
您可以创建一个静态HTML页面来测试这一点,手动添加图像进行测试
或者,您可以使用Html Agility Pack查找所有
img
元素,并使用HttpWebRequest
下载其src
URL后面的资源。看一看。也许能给你一个主意!不,那不是我在找它说当你使用位图时不要处理流,就像我所做的一样,我想还有另一个问题:(这种情况发生在相同的图像文件上,我可以用浏览器下载它,但图像与其他图像没有区别。错误的图像是-->[link](www.modaelinizde.com/paco-rabanne-一百万-100-ml-edt-parfumu)