Example #1
0
 private static void ImageSaved(object sender, ImageSavedArgs e)
 {
     imagesSaved.Add(e.image.ToString());
 }
Example #2
0
        public static void camera_Alarm(object sender, CamIdArgs e, LevelArgs l)
        {
            List<object> lightSpikeResults;

            bool spike = new bool();
            spike = false;
            int spikePerc = new int();

            //are we filtering light spikes?
            if (!CameraRig.rig[e.cam].cam.triggeredBySpike
                && (bool)(CameraRig.rigInfoGet(bubble.profileInUse, CameraRig.rig[e.cam].cameraName, CameraRig.infoEnum.lightSpike)))
            {

                lightSpikeResults = statistics.lightSpikeDetected(e.cam, l.lvl,
                                                       config.getProfile(bubble.profileInUse).timeSpike,
                                                       config.getProfile(bubble.profileInUse).toleranceSpike,
                                                       bubble.profileInUse,
                                                       time.millisecondsSinceStart());

                spike = (bool)lightSpikeResults[0];
                spikePerc = (int)lightSpikeResults[1];

            }

            //movement alarm was not previously triggered by a light spike
            //and a light spike has not been detected with the current alarm inducing movement
            //or we are not concerned about light spikes
            if ((!CameraRig.rig[e.cam].cam.triggeredBySpike && !spike)
                || CameraRig.rig[e.cam].cam.certifiedTriggeredByNonSpike
                || !(bool)(CameraRig.rigInfoGet(bubble.profileInUse, CameraRig.rig[e.cam].cameraName, CameraRig.infoEnum.lightSpike)))
            {

                CameraRig.rig[e.cam].cam.certifiedTriggeredByNonSpike = true;

                if (config.getProfile(bubble.profileInUse).areaOffAtMotion && !CameraRig.AreaOffAtMotionIsTriggeredCam(e.cam))
                {

                    CameraRig.AreaOffAtMotionTrigger(e.cam);
                    bubble.areaOffAtMotionTriggered = true;

                }

                if (bubble.Alert.on && bubble.imageSaveTime(true))
                {

                    try
                    {

                        string fName = fileNameSet(config.getProfile(bubble.profileInUse).filenamePrefix,
                                                   config.getProfile(bubble.profileInUse).cycleStampChecked,
                                                   config.getProfile(bubble.profileInUse).startCycle,
                                                   config.getProfile(bubble.profileInUse).endCycle,
                                                   ref config.getProfile(bubble.profileInUse).currentCycle,
                                                   true);

                        Bitmap saveBmp = null;

                        imageText stampArgs = new imageText();
                        stampArgs.bitmap = (Bitmap)CameraRig.rig[e.cam].cam.pubFrame.Clone();
                        stampArgs.type = "Alert";
                        stampArgs.backingRectangle = config.getProfile(profileInUse).alertTimeStampRect;

                        saveBmp = timeStampImage(stampArgs);

                        ImageCodecInfo jgpEncoder = GetEncoder(ImageFormat.Jpeg);
                        System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
                        EncoderParameters myEncoderParameters = new EncoderParameters(1);
                        EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, config.getProfile(profileInUse).alertCompression);
                        myEncoderParameters.Param[0] = myEncoderParameter;
                        saveBmp.Save(bubble.imageFolder + fName, jgpEncoder, myEncoderParameters);

                        Bitmap thumb = GetThumb(saveBmp);
                        thumb.Save(thumbFolder + tmbPrefix + fName, ImageFormat.Jpeg);
                        ImageThumbs.addThumbToPictureBox(thumbFolder + tmbPrefix + fName);
                        saveBmp.Dispose();
                        thumb.Dispose();
                        ImageSavedArgs a = new ImageSavedArgs();
                        a.image = fName;
                        ImageSaved(null, a);

                        updateSeq++;

                        if (updateSeq > 9999)
                        {
                            updateSeq = 1;
                        }

                        moveStatsAdd(time.currentTime());
                        logAddLine("Movement detected");
                        logAddLine("Movement level: " + l.lvl.ToString() + " spike perc.: " + Convert.ToString(spikePerc));
                        logAddLine("Image saved: " + fName);

                    }
                    catch (Exception)
                    {

                        logAddLine("Error in saving movement image.");
                        updateSeq++;

                    }
                }

            }
            else
            {

                //a light spike caused this alarm and we are catching light spikes
                if ((bool)(CameraRig.rigInfoGet(bubble.profileInUse, CameraRig.rig[e.cam].cameraName, CameraRig.infoEnum.lightSpike)))
                {

                    CameraRig.rig[e.cam].cam.triggeredBySpike = true;

                }

            }
        }