06-UIImagePickerController 照片单选

原创 2015年07月08日 18:53:56
只支持单选
1.获取本地相册图片、视频
//设置代理
<UIImagePickerControllerDelegate, UINavigationControllerDelegate

-------------------------------------------------获取本地相册图片-----------------------------------------------

//读取本地相册图片
- (IBAction)btn:(UIButton *)sender {
   
   
//创建图片选择控制器
   
UIImagePickerController *imageP = [[UIImagePickerController alloc] init];
   
//设置代理
    imageP.
delegate = self;
   
//设置类型
    imageP.
sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
   
//模态跳转
    [
self presentViewController:imageP animated:YES completion:nil];
   
}

-------------------------------------------------获取本地相册视频-----------------------------------------------

//读取本地相册视频
- (
IBAction)movie:(UIButton *)sender {
   
UIImagePickerController *movieP = [[UIImagePickerController alloc] init];
    movieP.
delegate = self;
    movieP.
sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    movieP.
mediaTypes = @[@"public.movie"];
    [
self presentViewController:movieP animated:YES completion:nil];
}

------------------------------------------------------摄像头拍照----------------------------------------------------

//使用摄像头拍视频
- (
IBAction)takeMovieAction:(id)sender {
   
   
//判断有木有摄像头
   
BOOL isCamera = [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear];
   
if (!isCamera) {
       
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"当前设备没有摄像头可以使用" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
        [alertView
show];
       
       
return;
    }
   
   
UIImagePickerController *pickerCtrl = [[UIImagePickerController alloc] init];
    pickerCtrl.
sourceType = UIImagePickerControllerSourceTypeCamera;
    pickerCtrl.
mediaTypes = @[@"public.movie"];
   
    [
self presentViewController:pickerCtrl animated:YES completion:nil];
   
   
}

------------------------------------------------重写点击相册图片资源调用的代理方法-------------------------------------

//重写点击相册图片资源调用的代理方法
- (
void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
   //取得媒体类型
   
NSString *type = info[UIImagePickerControllerMediaType  ];
   
   
//分别判断拿到指定类型后做什么操作
   
if([type isEqualToString:@"public.image"]){
       
//info是所点击的那张图片的信息,是个字典
       
NSLog(@"%@", info);
       
//key取得这张图片
       
UIImage *img =  [info objectForKey:UIImagePickerControllerOriginalImage];
       
//赋值给图片空间
        _image.image = img;

        //如果用户调用摄像头,保存相片到本地
        if (picker.sourceType == UIImagePickerControllerSourceTypeCamera)
       {
            //将拍摄的照片保存到本地
           
UIImageWriteToSavedPhotosAlbum(img, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
        }

    }
   
   
else if([type isEqualToString:@"public.movie" ])
    {
       
//拿到视频URL 就可以做一些操作了
       
NSURL *movieUrl = info[UIImagePickerControllerReferenceURL];
       
NSLog(@"%@", movieUrl);
    }
   
//并且跳转回来
    [
self dismissViewControllerAnimated:YES completion:nil];
}


#pragma mark - 相片保存完成后调用的代理方法
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {

   
NSLog(@"相片保存完成");
   
}


二、AssetsLibrary
      系统的UIImagePickerController只能让用户选择单图片,而一般情况下,我们需要上传多张图片,这时应该可以同时选择多张图片,否则用户体验会很差。因此多图片选择器就诞生了。
     在类库中,苹果为我们提供了一个AssetsLibrary.Framework的库,可以通过它获取设备里的图片和视频。在使用这个类库时,我们需要导入,且<AssetsLibrary/AssetsLibrary.h>。然后我们可以使用它来获取不同组的枚举。



//取得手机相册图片
- (
void)loadData {

   
/*
     1.
相册库              ALAssetsLibrary
     2.
相册文件夹          ALAssetsGroup
     3.
相册中的图片、视频    ALAsset
     */

   
   
//1.创建相册库
   
libarary = [[ALAssetsLibrary alloc] init];
   
   
//将相册库的文件取得
    [
libarary enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
       
       
//这个block会调用多次(有几个文件夹就调用几次)
       
if (group != nil) {
           
           
//取得相册中的图片
            [group
enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
               
               
//result  图片、视频
               
               
if (result != nil) {
                   
                   
//获取原图
                   
ALAssetRepresentation *presentation = [result defaultRepresentation];
                   
CGImageRef imgRef = [presentation fullResolutionImage];
                   
UIImage *img = [UIImage imageWithCGImage:imgRef];
                    [
_imageArray addObject:img];
                   
                   
//获取缩略图
                   
CGImageRef thumbnailRef = [result thumbnail];
                   
UIImage *thumbnailImg = [UIImage imageWithCGImage:thumbnailRef];
                    [
_thumbnailArray addObject:thumbnailImg];
               
                }
            }];
        }
       
       
//刷新视图
        [
_collectionView reloadData];
       
    }
failureBlock:^(NSError *error) {
       
       
NSLog(@"error:%@",error);
    }];
   
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【iOS】拍照/相册单选、相册多选、图片浏览、图片裁剪

有一段时间没有写iOS系列的博客了。最近由于项目的需要,就有封装了一个拍照/相册单选、相册多选、图片浏览、图片裁剪的工具类。在封装这这类是站在巨人的肩膀上做的。 1.ZLPhotoBrowser:h...

iOS:图片选择器(单选、多选、支持arc、支持iOS7+)

下载地址:http://download.csdn.net/detail/ouyangtianhan/8524871 一些有意思的动画效果...

iOS个人整理15-UIImagePickerController,照片选择器

一、UIImagePickerController UIImagePickerController是系统提供的用来获取图片和视频的接口 获取的途径为相机,图库,相册 分为以下几个步骤: 1. 初始化U...

UIImagePickerController获取照片的实现,添加overlay方法

简单的利用UIImagePickerController调用iPhone摄像头获取照片的方法,同时介绍了怎么添加overlay,用于自定义预览界面     UIImage...

UIImagePickerController 图像选取器--在iPhone中调用照相机、照片库

from:http://blog.csdn.net/iukey/article/details/7326719 UIImagePickerController 图像选取器是一种导航控制器类,...

使用UIImagePickerController从IPhone照片库或照相机获取图像

本文讲述使用3.0的方法怎样从iPhone的照片库或照相机获取图像。 我们将创建一个应用程序从图片库或照相机获取图像并显示与屏幕之上。下面是截图:   1. 创建一个新的 V...

UIImagePickerController 图像选取器--在iPhone中调用照相机、照片库—IOS开发

声明 欢迎转载,但是请尊重作者劳动成果,转载请保留此框内声明,谢谢。 文章出处:http://blog.csdn.net/iukey UIImagePickerControlle...
  • iukey
  • iukey
  • 2012年03月06日 22:01
  • 13813

UIImagePickerController 图像选取器--在iPhone中调用照相机、照片库

UIImagePickerController 图像选取器是一种导航控制器类,让你可以在应用程序中添加简单的图像选择功能或者照相机界面。用户会看到一个图像选择屏幕,在其中挑选相片,相片的来源则是他自己...

Swift - 从相册中选择照片并上传(使用UIImagePickerController)

Swift - 从相册中选择照片并上传(使用UIImagePickerController) 2016-05-13 08:35发布:hangge浏览:482 选择本地图片并上传...

UIImagePickerController图像选取器--在iPhone中调用照像机,照片库

欢迎转载,但是请尊重作者劳动成果,转载请保留此框内声明,谢谢。 文章出处:http://blog.csdn.net/iukey UIImagePickerController 图像选取器是...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:06-UIImagePickerController 照片单选
举报原因:
原因补充:

(最多只允许输入30个字)