使用照相机或图库中的图片来获取图片

利用系统相机或者图库中的图片进行裁剪缩放来获取图片
当我们需要使用系统图库中的照片或者需要新照一张照片时,我们可以使用UIImagePickerController来实现

我们使用UIImagePickerController必须遵守这两个协议

#pragma mark 实现—打开用户相册获取图片视图

-(void)pickImageFromAlbum {
// 初始化UIImagePickerController模态视图
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self; // 设置代理
// 判断是否有照相机或者有图片
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
NSLog(@”有照相机”);
} else {
NSLog(@”摄像头不可使用”);
}
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; // 设置选取的图片库 也可以直接使用摄像头进行拍摄
imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical; // 模态视图动画效果
imagePicker.allowsEditing = YES; // 设置用户可以自由裁剪图片

// 打开模态视图
[self presentViewController:imagePicker animated:YES completion:nil];
}

#pragma mark - UIImagePickerController Methods
#pragma mark 相册模态视图取消按钮 虽然此方法是可选的,但实际上需要必须实现

-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
NSLog(@”关闭了相册模态视图”);
// 重写了次方法必须手动取消视图
[picker dismissViewControllerAnimated:YES completion:nil];
}
#pragma mark 获取选择的图片
(void)imagePickerController:(UIImagePickerController )picker didFinishPickingMediaWithInfo:(NSDictionary )info {
// 获取裁剪的图片
UIImage image= [info objectForKey:@”UIImagePickerControllerOriginalImage”];
UIImageView imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = CGRectMake(20, 200, image.size.width, image.size.height);
[self.view addSubview:imageView];
[imageView release], imageView = nil;

NSLog(@”%@”, info);
// 返回的字典中键 只有当picker允许编辑的情况下才会返回这5个键值对
// UIImagePickerControllerOriginalImage // 没有编辑的图片
// UIImagePickerControllerEditedImage // 编辑过的图片
// UIImagePickerControllerCropRect // 编辑过的图片的位置和大小
// UIImagePickerControllerMediaType
// UIImagePickerControllerReferenceURL

// 关闭视图

[picker dismissViewControllerAnimated:YES completion:nil];