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); }
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)); }
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; } } }