Beispiel #1
0
		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
		}
Beispiel #2
0
 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;
         }
     }
 }