相册选取图片和照相机取图片
2015-06-08 15:26 PingKang 阅读(853) 评论(0) 编辑 收藏 举报选取图片可以从设备图片库或者从照相机抓取,系统为我们提供的类UIImagePickerController就是一个图像选择器。
UIImagePickerController的主要属性是sourceType,其定义如下
按顺序说明:
UIImagePickerControllerSourceTypePhotoLibrary 为相簿
UIImagePickerControllerSourceTypeCamera 为照相机
UIImagePickerControllerSourceTypeSavedPhotosAlbum 相机胶卷
UIImagePickerController 的委托对象必须实现UINavigationControllerDelegate,UIImagePickerControllerDelegate委托协议,通过其委托对象可以看出其要继承的协议有哪几种,如下图:
UIImagePickerControllerDelegate中定义了两个方法,选择完成时调用的方法和选择取消调用的方法,
如下:
下面直接上代码:
#import <UIKit/UIKit.h> @interface ViewController : UIViewController <UIImagePickerControllerDelegate,UINavigationControllerDelegate> @property (strong, nonatomic) UIImagePickerController *imagePicker; @property (retain, nonatomic) IBOutlet UIImageView *imageView; - (IBAction)pickPhotoLibrary:(id)sender; - (IBAction)pickPhotoCamera:(id)sender; @end
实现文件.m 代码
#import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (void)dealloc { [_imageView release]; [super dealloc]; } - (IBAction)pickPhotoLibrary:(id)sender { if (_imagePicker == nil) { _imagePicker = [[UIImagePickerController alloc] init]; } _imagePicker.delegate = self; //数据源类型为相册 _imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; [self presentViewController:_imagePicker animated:YES completion:nil]; } - (IBAction)pickPhotoCamera:(id)sender { //判断相机是否可用 if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { if (_imagePicker == nil) { _imagePicker = [[UIImagePickerController alloc] init]; } _imagePicker.delegate = self; _imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; [self presentViewController:_imagePicker animated:YES completion:nil]; } else { NSLog(@"照相机不可用。"); } } - (void) imagePickerControllerDidCancel: (UIImagePickerController *) picker { _imagePicker.delegate = nil; [self dismissViewControllerAnimated:YES completion:nil]; } - (void) imagePickerController: (UIImagePickerController *) picker didFinishPickingMediaWithInfo: (NSDictionary *) info { //完成选择后,取出没有被编辑过的图片 UIImage *originalImage = (UIImage *) [info objectForKey: UIImagePickerControllerOriginalImage]; self.imageView.image = originalImage; self.imageView.contentMode = UIViewContentModeScaleAspectFill; _imagePicker.delegate = nil; [self dismissViewControllerAnimated:YES completion:nil]; } @end
看一下在真机中的照相机效果图: