2017-01-07 2 views
-3

Я создал простое приложение для Windows Form, в котором есть окно с картинками, которое начинает захватываться при загрузке формы. Нравится этоСохранение изображений автоматически с помощью таймера

private void Form1_Load(object sender, EventArgs e) 
    { 

     webcam = new FilterInfoCollection(FilterCategory.VideoInputDevice); 
     foreach(FilterInfo VideoCaptureDevice in webcam) 
     { 
      cameraList.Items.Add(VideoCaptureDevice.Name); 
     } 
     cameraList.SelectedIndex = 0; 
     cam = new VideoCaptureDevice(webcam[cameraList.SelectedIndex].MonikerString); 
     cam.NewFrame += new NewFrameEventHandler(cam_NewFrame); 
     cam.Start(); 


    } 



    private void cam_NewFrame(object sender, NewFrameEventArgs eventArgs) 
    { 
     Bitmap bit = (Bitmap)eventArgs.Frame.Clone(); 
     pictureBox1.Image = bit; 


    } 

Я хочу, чтобы он автоматически сохранял изображения каждые 5 секунд. Я поставил таймер в код клика по таймеру, который я пытаюсь сохранить таким образом.

private void timer1_Tick(object sender, EventArgs e) 
    {      
     pictureBox1.Image.Save(@"C:\Users\Noshair\Desktop\Images\" + "my.jpg");      
    } 

, но как приложение начинает это дает ошибку на этой Image.Save линии Если написать один и тот же код в Button Click, то он работает отлично и сохраняет изображения.

{ "Ссылка на объект не указывает на экземпляр объекта."}

+0

Я использую AForge.Video и AForge.Video.Direct Show Ссылки для захвата видео с моей веб-камеры .. если это связано с этим. – Shair

+1

Ваш вопрос не содержит достаточной информации. Наверное, вы начинаете с пустого изображения. Очевидно, вы не установили точку останова в строке и не проверили, какое значение равно null. Это было бы минимальным усилием, которое я ожидал бы от вас. – Sefe

+0

На изображении pictureBox1 не загружено изображение, поэтому оно генерирует сообщение об ошибке. –

ответ

-2

Что-то работает для меня.

try 
     { 
      pb.Image.Save(location + time.ToString() + ".jpg"); 
     } 
     catch (NullReferenceException ex) 
     { 
      ex.ToString(); 
     } 

Я просто использовал TRY исключение улова и улова я ничего не делаю, так что ошибка может по-прежнему существует, но она не беспокоит или останавливать мое заявление и успешно сохранять изображения.

+0

Вы ** никогда ** не поймаете исключение NullReferenceException. Если вы превратите это в свою практику программирования, рано или поздно у вас появятся проблемы. Почему бы вам просто не проверить сначала значение null. – Sefe