Guest User

camera

a guest
Nov 1st, 2018
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.51 KB | None | 0 0
  1. using System;
  2. using Foundation;
  3. using UIKit;
  4.  
  5. namespace ex_camera3
  6. {
  7.     public partial class ViewController : UIViewController
  8.     {
  9.         protected ViewController(IntPtr handle) : base(handle)
  10.         {
  11.             // Note: this .ctor should not contain any initialization logic.
  12.         }
  13.  
  14.         private nfloat ScreenWidth = UIScreen.MainScreen.Bounds.Width;
  15.         private nfloat ScreenHeight = UIScreen.MainScreen.Bounds.Height;
  16.  
  17.         UIImagePickerController imagePicker;
  18.         UIImageView imageView;
  19.  
  20.  
  21.         private UIActionSheet _actionSheet = null;
  22.         public bool isCamera;
  23.  
  24.         private void UiConfig()
  25.         {
  26.             UIButton selectBtn = new UIButton(UIButtonType.System);
  27.             selectBtn.Layer.MasksToBounds = true;
  28.             selectBtn.Layer.BorderWidth = 0.5f;
  29.             selectBtn.Layer.BorderColor = UIColor.LightGray.CGColor;
  30.             selectBtn.SetTitle("选择照片", UIControlState.Normal);
  31.             selectBtn.Frame = new CoreGraphics.CGRect((ScreenWidth - 150) / 2, ScreenHeight - 80, 150, 30);
  32.             selectBtn.TouchUpInside += But_Click;
  33.             this.View.AddSubview(selectBtn);
  34.  
  35.             //视图容器  存放取的的照片
  36.             imageView = new UIImageView();
  37.             imageView.ClipsToBounds = true;
  38.             imageView.BackgroundColor = UIColor.LightGray;
  39.             imageView.Frame = new CoreGraphics.CGRect((ScreenWidth - 250) / 2, 100, 250, 250);
  40.             imageView.ContentMode = UIViewContentMode.ScaleAspectFit;
  41.             this.View.AddSubview(imageView);
  42.  
  43.             //保存相片到相册
  44.             UIButton surviveImgBtn = new UIButton(UIButtonType.System);
  45.             surviveImgBtn.Layer.BorderWidth = 0.5f;
  46.             surviveImgBtn.Layer.BorderColor = UIColor.LightGray.CGColor;
  47.             surviveImgBtn.Frame = new CoreGraphics.CGRect((ScreenWidth - 150) / 2, 400, 150, 30);
  48.             surviveImgBtn.SetTitle("保存照片", UIControlState.Normal);
  49.             surviveImgBtn.TouchUpInside += surviveImgBtn_Click;
  50.             this.View.AddSubview(surviveImgBtn);
  51.  
  52.             //创建图像选择器控制
  53.             imagePicker = new UIImagePickerController();
  54.             imagePicker.FinishedPickingMedia += Handle_FinishedPickingMedia;
  55.             imagePicker.Canceled += Handle_Canceled;
  56.         }
  57.  
  58.         private void Handle_Canceled(object sender, EventArgs e)
  59.         {
  60.             UIAlertView alertView = new UIAlertView();
  61.             alertView.Title = "您已取消";
  62.             alertView.AddButton("Cancel");
  63.             alertView.Show();
  64.             this.imagePicker.DismissViewControllerAsync(true);
  65.  
  66.         }
  67.  
  68.         private void Handle_FinishedPickingMedia(object sender, UIImagePickerMediaPickedEventArgs e)
  69.         {
  70.             throw new NotImplementedException();
  71.         }
  72.  
  73.         private void But_Click(object sender, EventArgs e)
  74.         {
  75.             UIActionSheet actionSheet = new UIActionSheet();
  76.             actionSheet.Title = "请选择";
  77.             actionSheet.AddButton("相机");
  78.             actionSheet.AddButton("相册");
  79.             actionSheet.AddButton("取消");
  80.             //actionSheet.DestructiveButtonIndex = 0;
  81.             actionSheet.CancelButtonIndex = 2;
  82.             actionSheet.Clicked += delegate (object a, UIButtonEventArgs b)
  83.             {
  84.                 string indexStr = b.ButtonIndex.ToString();
  85.                 if (int.Parse(indexStr) == 0)
  86.                 {
  87.                     //相机
  88.                     if (UIImagePickerController.IsSourceTypeAvailable(UIImagePickerControllerSourceType.Camera))
  89.                     {
  90.                         imagePicker.SourceType = UIImagePickerControllerSourceType.Camera;
  91.                         //设置摄像头
  92.                         imagePicker.CameraDevice = UIImagePickerControllerCameraDevice.Front;//前置摄像头
  93.                                                                                              //设置闪光灯
  94.                         imagePicker.CameraFlashMode = UIImagePickerControllerCameraFlashMode.On;//打开摄像头
  95.                                                                                                 //设置相机模式 这里面有两个模式 一个是拍摄静止的照片 一个是拍摄动的照片 也是通过CameraDevice来设置的
  96.  
  97.                         imagePicker.Canceled += Handle_Canceled;
  98.                         this.PresentModalViewController(imagePicker, true);
  99.                     }
  100.                     else
  101.                     {
  102.                         UIAlertView alertView = new UIAlertView();
  103.                         alertView.Title = "相机不可用";
  104.                         alertView.AddButton("Cancel");
  105.                         alertView.Show();
  106.                     }
  107.                 }
  108.                 else if (int.Parse(indexStr) == 1)
  109.                 {
  110.                     //相册
  111.                     //设置源和媒体类型
  112.                     imagePicker.SourceType = UIImagePickerControllerSourceType.SavedPhotosAlbum;
  113.                     imagePicker.MediaTypes = UIImagePickerController.AvailableMediaTypes(UIImagePickerControllerSourceType.SavedPhotosAlbum);
  114.                     this.PresentModalViewController(imagePicker, true);
  115.                 }
  116.                 else
  117.                 {
  118.                     //取消
  119.                 }
  120.             };
  121.             actionSheet.ShowInView(this.View);
  122.         }
  123.  
  124.         protected static void Handle_FinishedPickingMedia(ViewController instance, object sender, UIImagePickerMediaPickedEventArgs e)
  125.         {
  126.             bool isImage = false;
  127.             switch (e.Info[UIImagePickerController.MediaType].ToString())
  128.             {
  129.                 case "public.image":
  130.                     Console.WriteLine("Image selected");
  131.                     isImage = true;
  132.                     break;
  133.                 case "public.video":
  134.                     Console.WriteLine("Video selected");
  135.                     break;
  136.             }
  137.  
  138.             // get common info (shared between images and video)
  139.             NSUrl referenceURL = e.Info[new NSString("UIImagePickerControllerReferenceUrl")] as NSUrl;
  140.             if (referenceURL != null)
  141.             {
  142.                 Console.WriteLine("Url:" + referenceURL.ToString());
  143.             }
  144.  
  145.             if (isImage)
  146.             {
  147.                 // get the original image
  148.                 UIImage originalImage = e.Info[UIImagePickerController.OriginalImage] as UIImage;
  149.                 if (originalImage != null)
  150.                 {
  151.                     // do something with the image
  152.                     Console.WriteLine("got the original image");
  153.                     imageView.Image = originalImage; // display
  154.                 }
  155.             }
  156.             else
  157.             { // if it's a video
  158.               // get video url
  159.                 NSUrl mediaURL = e.Info[UIImagePickerController.MediaURL] as NSUrl;
  160.                 if (mediaURL != null)
  161.                 {
  162.                     Console.WriteLine(mediaURL.ToString());
  163.                 }
  164.             }
  165.  
  166.             instance.imagePicker.DismissViewControllerAsync(true);
  167.         }
  168.  
  169.         public override void ViewDidLoad()
  170.         {
  171.             base.ViewDidLoad();
  172.             // Perform any additional setup after loading the view, typically from a nib.
  173.         }
  174.  
  175.         public override void DidReceiveMemoryWarning()
  176.         {
  177.             base.DidReceiveMemoryWarning();
  178.             // Release any cached data, images, etc that aren't in use.
  179.         }
  180.     }
  181. }
Advertisement
Add Comment
Please, Sign In to add comment