コード例 #1
0
        private static void Main(string[] args)
        {
            var config   = Config.GetIConfiguration(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
            var settings = new CameraStillSettings
            {
                CaptureWidth               = 640,
                CaptureHeight              = 480,
                CaptureJpegQuality         = 90,
                CaptureTimeoutMilliseconds = 300,
                HorizontalFlip             = true,
                VerticalFlip               = true
            };
            string filename     = DateTime.UtcNow.ToString("yyyy-MM-dd-HH-mm-ss") + ".jpg";
            var    pictureBytes = Pi.Camera.CaptureImage(settings);
            var    targetPath   = config.GetSection("LocalPath").Value + filename;

            if (File.Exists(targetPath))
            {
                File.Delete(targetPath);
            }

            File.WriteAllBytes(targetPath, pictureBytes);
            CloudSave(filename, string.Empty, config.GetSection("LocalPath").Value, config.GetSection("Storage").Value, "Dev").GetAwaiter().GetResult();
            File.Delete(targetPath);
        }
コード例 #2
0
        public IActionResult CaptureImage(ImageViewModel viewModel)
        {
            if (Pi.Camera.IsBusy)
            {
                ViewData["Message"] = "Camera is busy!";
                return(View());
            }

            var pin = Pi.Gpio.Pin21;

            pin.PinMode = GpioPinDriveMode.Output;
            pin.Write(true);

            // Prepare the camera settings object, getting the values from the ViewModel
            CameraStillSettings cameraSettings = new CameraStillSettings
            {
                CaptureTimeoutMilliseconds = 900, // default for CaptureImageJpeg = 300 (min value recommended)
                ImageFlipVertically        = true,
                //CaptureEncoding = CameraImageEncodingFormat.Jpg, // default
                CaptureJpegQuality = 95
            };

            ViewModelToCameraSettings(viewModel, ref cameraSettings);

            // Take the picture with the camera settings and get image as bytes
            var imageBytes = Pi.Camera.CaptureImage(cameraSettings);

            // Encode the bytes to base64 and store in ViewModel
            var base64string = Convert.ToBase64String(imageBytes);

            viewModel.ImageData = base64string;

            //var targetPath = "./wwwroot/picture.jpg";
            //if (System.IO.File.Exists(targetPath))
            //{
            //    System.IO.File.Delete(targetPath);
            //}
            //System.IO.File.WriteAllBytes(targetPath, imageBytes);

            pin.Write(false);
            ViewData["Message"] = "Image captured.";

            return(View(viewModel));
        }
コード例 #3
0
        private void ViewModelToCameraSettings(ImageViewModel viewModel, ref CameraStillSettings cameraSettings)
        {
            cameraSettings.CaptureWidth  = resolutionWidths[(int)viewModel.Resolution];
            cameraSettings.CaptureHeight = resolutionHeights[(int)viewModel.Resolution];
            cameraSettings.CaptureTimeoutMilliseconds = viewModel.CaptureTimeoutMilliseconds;
            switch (viewModel.ImageEncoding)
            {
            case "jpg":
            {
                cameraSettings.CaptureEncoding = CameraImageEncodingFormat.Jpg;
                break;
            }

            case "png":
            {
                cameraSettings.CaptureEncoding = CameraImageEncodingFormat.Png;
                break;
            }
            }
        }