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)

ArgumentExceptionindex と count の合計が buffer の長さより大きい場合に をスローします。totalvariable に より小さい正しい値が含まれていることを確認しますbuffer

于 2011-09-08T15:04:11.037 に答える
0

このエラーは、IP カメラの現在の画像を取得しようとしている人によく見られます。その理由は、多くの IP カメラが URL で独自の Web ページをレンダリングし、Web ページを画像として扱っているためです。これは決して機能しません。

ほとんどの 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 に答える
0

ArgumentException

ケース「0」のオフセットとケース「合計」のカウントの合計は、バッファの長さよりも大きくなります。

これを見る

試す

byte [] buffer= new byte[total]; 

while ループの後にこのステートメントを作成します

于 2011-09-08T15:03:29.397 に答える