1

我正在使用这个代码片段(见下文)。我不断收到上述错误。谁能告诉我我做错了什么以及如何解决?谢谢。

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;
}

我想补充一点,这个程序不时运行良好。有些日子它根本不起作用,我不明白为什么。我有一个演示文稿,但我无法承受该程序在那天无法运行。

4

3 回答 3

2

根据MSDN构造函数

public MemoryStream(byte[] buffer, int index, int count)

ArgumentException当 index 和 count 的总和大于缓冲区的长度时抛出一个。验证total变量是否包含小于 的正确值buffer

于 2011-09-08T15:04:11.037 回答
0

参数异常

您的情况下的偏移量“0”和您的情况下的计数“total”的总和大于缓冲区长度。

看到这个

尝试

byte [] buffer= new byte[total]; 

在while循环之后做这个语句

于 2011-09-08T15:03:29.397 回答
0

人们试图获取 IP 摄像机的当前图像时,经常会看到此错误。原因是许多 IP 摄像机在 URL 处呈现自己的网页,而您将网页视为图像,这将永远无法正常工作。

大多数 IP 摄像机都有一个可以提供当前图像的 URL,您应该使用它。如果你不知道它是什么,这里是一个起点:

http://www.bluecherrydvr.com/2012/01/technical-information-list-of-mjpeg-and-rtsp-paths-for-network-cameras/

于 2014-04-30T03:06:55.670 回答