所以我这里有这个代码从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();
}
答案 0 :(得分:0)
C# "Parameter is not valid." creating new bitmap
似乎是为什么在Bitmaps上浪费了太多的内存,一次不能存储太多的位图。
你说你创建了490个位图..找出限制并停在那里或开始覆盖旧的位图