ArgumentException发生:参数无效
我有这个代码片段(见下文),我正在与。我不断收到上述错误。任何人都可以告诉我我做错了什么以及如何解决它?谢谢。ArgumentException发生:参数无效
private static Image<Bgr, Byte> GetImageFromIPCam(string sourceURL)
{
byte[] buffer = new byte[300000];
int read, total = 0;
// create HTTP request
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sourceURL);
// get response
WebResponse resp = req.GetResponse();
// get response stream
Stream stream = resp.GetResponseStream();
// read data from stream
while ((read = stream.Read(buffer, total, 1000)) != 0)
{
total += read;
}
// get bitmap
Bitmap bmp = (Bitmap)Bitmap.FromStream(//error occurs here
new MemoryStream(buffer, 0, total)); //error occurs here
Image<Bgr, Byte> img = new Image<Bgr, byte>(bmp);
return img;
}
我想补充一点,这个程序不时地工作正常。有些时候它根本不起作用,我不明白为什么。我有一个演示文稿,我无法承担该程序在当天无法运行。
的ArgumentException
的你的情况的“0”偏移量和计数你的情况“总”大于缓冲区长度的总和。
看到this
尝试
byte [] buffer= new byte[total];
化妆while循环
你是不是指while循环之前?当我把“byte [] buffer = new byte [total];”在while循环之后,我得到错误消息说“在声明之前不能使用局部变量”缓冲区“,这是准确的。但是,当我将它放在while循环之前时,我得到以下消息:ArgumentOutOfRange异常:指定的参数不存在 参数名称:此代码行的大小:while((read = stream.Read(buffer,total,1000))!= 0) – ck22
当人们试图获取IP摄像机的当前图像时,会看到很多此错误。原因是许多IP摄像机在URL上呈现他们自己的网页,并且您将网页视为图像,这将永远不会工作。
大多数IP摄像机都有一个URL来提供当前图像,您应该使用它。如果你不知道它是什么,这里有一个出发点:
你有没有实际的异常文本?应该提供一个行号以便更快速的参考。编辑:错过了评论... nm –
向我们提示错误的行 – confucius
您确认缓冲区不是空的(并且包含有效的图像格式)吗? –