コード例 #1
0
        async void CapturePhoto()
        {
            var videoConnection = stillImageOutput.ConnectionFromMediaType(AVMediaType.Video);
            var sampleBuffer    = await stillImageOutput.CaptureStillImageTaskAsync(videoConnection);

            var jpegImage = AVCaptureStillImageOutput.JpegStillToNSData(sampleBuffer);

            var photo = new UIImage(jpegImage);

            NSData imgData = photo.AsJPEG(0.8f);

            string timestr = DateTime.Now.Ticks.ToString();

            //The Folllowing is an answer to quesition that how to Get the selected Crop and Image Name
            Models.CropModel SelectedCrop      = null;
            string           selectedImageName = (MainPage as CameraPage).GetViewModel.Parent.SelectedImagePath;

            if ((MainPage as CameraPage).GetViewModel.SelectedCrop != null)
            {
                SelectedCrop = (MainPage as CameraPage).GetViewModel.SelectedCrop;
            }
            //End of


            var documentsDirectory = Environment.GetFolderPath
                                         (Environment.SpecialFolder.MyDocuments);

            var directory = Path.Combine(documentsDirectory, "Photos");

            //string[] files = Directory.GetFiles(directory);

            if (!Directory.Exists(directory))
            {
                Directory.CreateDirectory(directory);
            }

            string jpgFilename = System.IO.Path.Combine(directory, "NEW_IOS_" + timestr + "_Photo.jpg"); // hardcoded filename, overwritten each time



            NSError err = null;

            if (imgData.Save(jpgFilename, false, out err))
            {
                BigTed.BTProgressHUD.ShowToast("Photo is taken!!!", toastPosition: BigTed.ProgressHUD.ToastPosition.Bottom, timeoutMs: 1200);
                //Console.WriteLine("saved as " + jpgFilename);
            }
            else
            {
                BigTed.BTProgressHUD.ShowToast("Photo is not taken!!!", toastPosition: BigTed.ProgressHUD.ToastPosition.Bottom, timeoutMs: 1200);
                //Console.WriteLine("NOT saved as " + jpgFilename + " because" + err.LocalizedDescription);
            }

            await MainPage.Navigation.PopModalAsync();
        }
コード例 #2
0
        async void TakePhotoButtonTapped(object sender, EventArgs e)
        {
            camera.StopPreview();

            var image = textureView.Bitmap;

            try
            {
                var absolutePath = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDcim).AbsolutePath;
                var folderPath   = absolutePath + "/Camera";

                //The Folllowing is an answer to quesition that how to Get the selected Crop and Image Name
                Models.CropModel SelectedCrop      = null;
                string           selectedImageName = (MainPage as CameraPage).GetViewModel.Parent.SelectedImagePath;
                FarmerModel      selectedFarmer    = (MainPage as CameraPage).GetViewModel.Parent.SelectedFarmer;
                FieldModel       selectedField     = (MainPage as CameraPage).GetViewModel.Parent.SelectedField;


                var filePath = string.Empty;

                if (!string.IsNullOrEmpty(selectedImageName))
                {
                    filePath = System.IO.Path.Combine(folderPath, string.Format("{0}.jpg", selectedImageName));
                    File.Delete(filePath);
                }

                if ((MainPage as CameraPage).GetViewModel.SelectedCrop != null)
                {
                    SelectedCrop = (MainPage as CameraPage).GetViewModel.SelectedCrop;
                }

                filePath = System.IO.Path.Combine(folderPath, string.Format("NEW_{0}_{1}_{2}.jpg", SelectedCrop.Crop_Name, selectedField.FieldGuid, SelectedCrop.Crop_ID.ToString()));


                //End of



                var fileStream = new FileStream(filePath, FileMode.Create);
                await image.CompressAsync(Bitmap.CompressFormat.Jpeg, 80, fileStream);

                fileStream.Close();
                image.Recycle();
                AndHUD.Shared.ShowToast(activity, "Photo saved!!!", MaskType.Clear, TimeSpan.FromMilliseconds(1500));
                var intent = new Android.Content.Intent(Android.Content.Intent.ActionMediaScannerScanFile);
                var file   = new Java.IO.File(filePath);
                var uri    = Android.Net.Uri.FromFile(file);
                intent.SetData(uri);
                //Forms.Context.SendBroadcast(intent);
                Context.SendBroadcast(intent);



                await MainPage.Navigation.PopModalAsync();
            }
            catch (Exception ex)
            {
                AndHUD.Shared.ShowToast(activity, "Photo can not taken!!!", MaskType.Clear, TimeSpan.FromMilliseconds(1500));
                System.Diagnostics.Debug.WriteLine(@"				", ex.Message);
            }

            //camera.StartPreview();
        }