//1.选择相册图片
- (IBAction)selectPhoto:(id)sender
{
UIImagePickerController *pickerController = [[UIImagePickerController alloc] init];
pickerController.delegate = self;
/*
UIImagePickerControllerSourceTypePhotoLibrary 显示所有相册的文件夹
UIImagePickerControllerSourceTypeSavedPhotosAlbum 仅显示存储照片文件夹中的图片
*/
pickerController.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
[self presentViewController:pickerController animated:YES completion:^{
NSLog(@"模态视图已经弹出");
}];
[pickerController release];
}
//2.调用摄像头拍照
- (IBAction)camerPhoto:(id)sender
{
/*
判断当前设备是否有摄像头
UIImagePickerControllerCameraDeviceRear : 后置摄像头
UIImagePickerControllerCameraDeviceFront : 前置摄像头
*/
BOOL isCamer = [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear];
if (!isCamer) {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示"
message:@"没有摄像头"
delegate:nil cancelButtonTitle:@"取消"otherButtonTitles:nil, nil];
[alertView show];
[alertView release];
return;
}
UIImagePickerController *pickerController = [[UIImagePickerController alloc] init];
/*
UIImagePickerControllerSourceTypeCamera 调用摄像头拍照
*/
pickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:pickerController animated:YES completion:NULL];
[pickerController release];
}
//3.选取视频资源
- (IBAction)selectVedio:(id)sender {
UIImagePickerController *pickerController = [[UIImagePickerController alloc] init];
pickerController.delegate = self;
/*
UIImagePickerControllerSourceTypePhotoLibrary 显示所有的相册文件
UIImagePickerControllerSourceTypeSavedPhotosAlbum 仅显示存储照片文件夹的图片
*/
pickerController.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
[self presentViewController:pickerController animated:YES completion:NULL];
[pickerController release];
}
//4.拍摄视频
- (IBAction)camerVedio:(id)sender {
UIImagePickerController *pickerController = [[UIImagePickerController alloc] init];
pickerController.delegate = self;
pickerController.sourceType = [UIImagePickerControllerSourceTypeCamera];
//设置选取的媒体类型,public.movie 是视频类型
pickerController.mediaTypes = @[@"public.movie"];
[self presentViewController:pickerController animated:YES completion:NULL];
[pickerController release];
}
#pragma mark - UIImagePickerController delegate
//选取一个照片、或者视频时调用的协议方法
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[picker dismissViewControllerAnimated:YES completion:^{
// NSLog(@"%@",info);
/*
1.获取媒体的类型
public.image 图片资源
public.movie 视频资源
*/
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
//2.判断媒体类型
if ([mediaType isEqualToString:@"public.image"]) {//图片
UIImage *img = [info objectForKey:UIImagePickerControllerOriginalImage];
//1.显示图片
self.imageView.image = img;
//2.如果是拍摄的图片,则保存到相册
if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) {
//图片数据img,保存到相册
UIImageWriteToSavedPhotosAlbum(img, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);
}
}else if ([mediaType isEqualToString:@"public.movie"]){
//获取到此媒体资源的url地址
NSURL *url = [info objectForKey:UIImagePickerControllerMediaURL];
//创建视频播放器
MPMoviePlayerViewController *moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
// self presentViewController:<#(UIViewController *)#> animated:<#(BOOL)#> completion:<#^(void)completion#>
//弹出视频控制器,开始播放
[self presentMoviePlayerViewControllerAnimated:moviePlayer];
[moviePlayer release];
}
}];
}
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error
contextInfo:(void *)contextInfo {
//保存相片的操作
}