private void timerPhoneWebCam_Tick(object sender,EventArgs e) { try { if(vidCapt==null) { if(intPtrVideo != IntPtr.Zero) {// Release any previous buffer Marshal.FreeCoTaskMem(intPtrVideo); intPtrVideo=IntPtr.Zero; } int deviceCount=VideoCapture.GetDeviceCount(); if(deviceCount>0) { try { vidCapt=new VideoCapture(0,640,480,24,pictBoxVideo); //image capture will now continue below if successful } catch { Phones.SetWebCamImage(IpAddressCur,null,Environment.MachineName); return;//haven't actually seen this happen since we started properly disposing of vidCapt } } Phones.SetWebCamImage(IpAddressCur,null,Environment.MachineName); } if(vidCapt!=null) { if(intPtrVideo != IntPtr.Zero) {// Release any previous buffer Marshal.FreeCoTaskMem(intPtrVideo); intPtrVideo=IntPtr.Zero; } Bitmap bitmapSmall=null; try { intPtrVideo = vidCapt.Click();//will fail if camera unplugged Bitmap bitmap= new Bitmap(vidCapt.Width,vidCapt.Height,vidCapt.Stride,PixelFormat.Format24bppRgb,intPtrVideo); bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY);// If the image is upsidedown int w=50; int h=(int)(((float)w)/640f*480f); bitmapSmall = new Bitmap(w,h); using(Graphics g = Graphics.FromImage(bitmapSmall)) { g.DrawImage(bitmap,new Rectangle(0,0,bitmapSmall.Width,bitmapSmall.Height)); } bitmap.Dispose(); bitmap=null; } catch { //bitmapSmall will remain null vidCapt.Dispose(); vidCapt=null;//To prevent the above slow try/catch from happening again and again. } finally { //Marshal.FreeCoTaskMem(intPtrVideo); } if(IpAddressCur!="") {//found entry in phone table matching this machine ip. Phones.SetWebCamImage(IpAddressCur,bitmapSmall,Environment.MachineName); } if(bitmapSmall!=null) { bitmapSmall.Dispose(); bitmapSmall=null; } } } catch { }//Prevents UE from losing MySQL service }
private void timerPhoneWebCam_Tick(object sender, EventArgs e) { if (vidCapt == null) { if (intPtrVideo != IntPtr.Zero) // Release any previous buffer { Marshal.FreeCoTaskMem(intPtrVideo); intPtrVideo = IntPtr.Zero; } int deviceCount = VideoCapture.GetDeviceCount(); if (deviceCount > 0) { try { vidCapt = new VideoCapture(0, 640, 480, 24, pictBoxVideo); //image capture will now continue below if successful } catch { Phones.SetWebCamImage(IpAddress192, null, Environment.MachineName); return; //haven't actually seen this happen since we started properly disposing of vidCapt } } Phones.SetWebCamImage(IpAddress192, null, Environment.MachineName); } if (vidCapt != null) { if (intPtrVideo != IntPtr.Zero) // Release any previous buffer { Marshal.FreeCoTaskMem(intPtrVideo); intPtrVideo = IntPtr.Zero; } Bitmap bitmapSmall = null; try { intPtrVideo = vidCapt.Click(); //will fail if camera unplugged Bitmap bitmap = new Bitmap(vidCapt.Width, vidCapt.Height, vidCapt.Stride, PixelFormat.Format24bppRgb, intPtrVideo); bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY); // If the image is upsidedown int w = 50; int h = (int)(((float)w) / 640f * 480f); bitmapSmall = new Bitmap(w, h); using (Graphics g = Graphics.FromImage(bitmapSmall)) { g.DrawImage(bitmap, new Rectangle(0, 0, bitmapSmall.Width, bitmapSmall.Height)); } bitmap.Dispose(); bitmap = null; } catch { //bitmapSmall will remain null vidCapt.Dispose(); vidCapt = null; //To prevent the above slow try/catch from happening again and again. } finally { //Marshal.FreeCoTaskMem(intPtrVideo); } if (IpAddress192 != "") //found entry in phone table matching this machine ip. { Phones.SetWebCamImage(IpAddress192, bitmapSmall, Environment.MachineName); } if (bitmapSmall != null) { bitmapSmall.Dispose(); bitmapSmall = null; } } }