0

所以我在这里有这段代码,它从 AVI 文件中提取帧,克隆它们,并将它们存储在一个数组中。几百次后,我收到一条错误消息“参数无效”。我已经四处寻找答案,但所有答案都是针对某件事曾经奏效,但随后不再奏效的情况。在此错误发生之前,此行平均执行这些行 490 次。我想知道你们中是否有人能告诉我这里出了什么问题?此外,file = null 实际上稍后在代码中更改为具有值,以防您认为这是我得到错误的地方。

帮助:我正在使用 AForge.Video.VFW;对于 AVIWriter 和 Reader,我在另一个线程中调用该 void。

对不起,如果这还不够好。这是我在这里问的第一个问题。

AVIWriter writer = new AVIWriter("wmv3");
AVIReader reader = new AVIReader();
string file = null;
Bitmap[] AVIImages = new Bitmap[1];

int imagesProcessed = 0;
double progressValue = 0;

private void getImages()
{
    reader.Open(file);
    while (reader.Position - reader.Start < reader.Length)
    {
        Application.DoEvents();
        AVIImages[imagesProcessed] = (Bitmap)reader.GetNextFrame().Clone();
        imagesProcessed++;
        progressValue = (int)((double)imagesProcessed / (double)reader.Length * 100);
        Array.Resize(ref AVIImages, imagesProcessed + 1);
        Thread.Sleep(10);
    }
    reader.Close();
    picWaiting.Visible = false;
    lblWaiting.Text = "Done!";
    timeUpdateProgressBar.Stop();
}
4

1 回答 1

0

C#“参数无效。” 创建新位图

似乎这就是为什么发生这种情况的原因,在位图上浪费了太多内存,一次无法存储太多位图。

你说你创建了 490 个位图 .. 找出限制,要么停在那里,要么开始覆盖旧的位图

于 2013-08-12T23:19:09.420 回答