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:图片选择器(单选、多选、支持arc、支持iOS7+)

下载地址:http://download.csdn.net/detail/ouyangtianhan/8524871 一些有意思的动画效果...
  • ouyangtianhan
  • ouyangtianhan
  • 2015年03月23日 11:36
  • 3173

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

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

iOS之Modal情况下使用WebView使用系统相册

描述一下我今天遇到的bug情况: 1.app在Windows.rootViewController 下(rootViewController是一个NavigationController)push一...
  • u014410695
  • u014410695
  • 2017年06月21日 16:36
  • 479

从UIWebView中调用iOS相册,并选择图片上传到Linux Web服务器。

转自博客:http://blog.sina.com.cn/s/blog_a5610c5301014p94.html ======首先看以下ios端======= ViewController.h ...
  • wenzfcsdn
  • wenzfcsdn
  • 2015年03月02日 10:08
  • 2199

Android 单选图片,一个dialog全部搞定

一:为什么写这个文章? 相信大家对图片选择已经不陌生了,大家基本一直都在用。但是假如你在选择图片的时候遇到,反应比较慢。Android 7.0选择图片时闪退的问题。你不妨花几分钟往下看下。 随着相...
  • qq_31302233
  • qq_31302233
  • 2017年04月11日 15:06
  • 527

android多图选择 图片/视频 单选or多选,以及视频录制

最近项目中用到多图选择上传的需求,随后百度了一下用了别人写的demo,发现在很多机型上各种不适,闪退等问题,严重影响使用,后面我自己写了一个,公司20几款手机全部通过,在腾讯云测中也使用了4,50款手...
  • sinat_28238111
  • sinat_28238111
  • 2017年05月25日 15:48
  • 289

iOS开发在js中调用oc可以实现在HTML5中调用手机系统的相册,拍照等。

控制器.m的实现如下 #import "ViewController.h" @interface ViewController () @end @implementation ViewCont...
  • wqs1028
  • wqs1028
  • 2015年12月22日 18:18
  • 4842

iOS【webView 加载微信文章注入JS实现交互 浏览图片及保存】

最近项目某个模块中要求可以实现对网页中图片的查看,并要求在多张图片的情况下可以实现滑动浏览。 所以,问题的集中点就是如何获取所有的图片地址及添加图片的点击事件。不多说,直接上码! 在网页加载完...
  • luolianxi
  • luolianxi
  • 2017年09月11日 00:20
  • 281

Android 超高仿微信图片多选、单选,图片剪切,图片预览,拍照等功能

github地址: https://github.com/ioneday/ImageSelector 实现了微信图片选择的所有功能 单选、多选 单选,没有预览功能。 多选,可以控制最大 选择图...
  • heiday
  • heiday
  • 2015年12月20日 16:10
  • 4052

checkbox选中判断及实现单选功能

///功能:判断是否有选中项;             ///参数:frm - 当前表单Form;idVal - 要查找的CheckBox的id;             ///返回:True/F...
  • vipyhd
  • vipyhd
  • 2012年06月06日 08:14
  • 1936
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:06-UIImagePickerController 照片单选
举报原因:
原因补充:

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