iOS--app自定义相册--从自定义的相册中获取图片
2017-01-23 13:25
483 查看
一.获取单张图片
思路:
1.利用UIImagePickerController可以从系统自带的App(照片\相机)中获得图片2.设置代理,遵守代理协议
注意这个
UIImagePickerController类比较特殊,需要遵守两个代理协议
@interfaceViewController()<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
3.实现代理的方法
didFinishPickingMediaWithInfo
-(void)getImageFromIpc { //1.判断相册是否可以打开 if(![UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])return; //2.创建图片选择控制器 UIImagePickerController*ipc=[[UIImagePickerControlleralloc]init]; /** typedefNS_ENUM(NSInteger,UIImagePickerControllerSourceType){ UIImagePickerControllerSourceTypePhotoLibrary,//相册 UIImagePickerControllerSourceTypeCamera,//用相机拍摄获取 UIImagePickerControllerSourceTypeSavedPhotosAlbum//相簿 } */ //3.设置打开照片相册类型(显示所有相簿) ipc.sourceType=UIImagePickerControllerSourceTypePhotoLibrary; //ipc.sourceType=UIImagePickerControllerSourceTypeSavedPhotosAlbum; //照相机 //ipc.sourceType=UIImagePickerControllerSourceTypeCamera; //4.设置代理 ipc.delegate=self; //5.modal出这个控制器 [selfpresentViewController:ipcanimated:YEScompletion:nil]; } #pragmamark--<UIImagePickerControllerDelegate>-- //获取图片后的操作 -(void)imagePickerController:(UIImagePickerController*)pickerdidFinishPickingMediaWithInfo:(NSDictionary<NSString*,id>*)info { //销毁控制器 [pickerdismissViewControllerAnimated:YEScompletion:nil]; //设置图片 self.imageView.image=info[UIImagePickerControllerOriginalImage]; }
二.获取多张图片
思路:
导入头文件#import<Photos/Photos.h>
PHAsset:一个资源,比如一张图片\一段视频
PHAssetCollection:一个相簿
PHImageManager图片管理者,是单例,发送请求才能从asset获取图片
PHImageRequestOptions图片请求选项
注意:这个类是iOS8开始推广,iOS9开始废弃之前的方法
系统适配iOS8之前,用下面这个库里面的API
#import<AssetsLibrary/AssetsLibrary.h>
1.获得所有相簿的原图
-(void)getOriginalImages { //获得所有的自定义相簿 PHFetchResult<PHAssetCollection*>*assetCollections=[PHAssetCollectionfetchAssetCollectionsWithType:PHAssetCollectionTypeAlbumsubtype:PHAssetCollectionSubtypeAlbumRegularoptions:nil]; //遍历所有的自定义相簿 for(PHAssetCollection*assetCollectioninassetCollections){ [selfenumerateAssetsInAssetCollection:assetCollectionoriginal:YES]; } //获得相机胶卷 PHAssetCollection*cameraRoll=[PHAssetCollectionfetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbumsubtype:PHAssetCollectionSubtypeSmartAlbumUserLibraryoptions:nil].lastObject; //遍历相机胶卷,获取大图 [selfenumerateAssetsInAssetCollection:cameraRolloriginal:YES]; }
2.获得所有相簿中的缩略图
-(void)getThumbnailImages { //获得所有的自定义相簿 PHFetchResult<PHAssetCollection*>*assetCollections=[PHAssetCollectionfetchAssetCollectionsWithType:PHAssetCollectionTypeAlbumsubtype:PHAssetCollectionSubtypeAlbumRegularoptions:nil]; //遍历所有的自定义相簿 for(PHAssetCollection*assetCollectioninassetCollections){ [selfenumerateAssetsInAssetCollection:assetCollectionoriginal:NO]; } //获得相机胶卷 PHAssetCollection*cameraRoll=[PHAssetCollectionfetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbumsubtype:PHAssetCollectionSubtypeSmartAlbumUserLibraryoptions:nil].lastObject; [selfenumerateAssetsInAssetCollection:cameraRolloriginal:NO]; }
3.遍历相册
/** *遍历相簿中的所有图片 *@paramassetCollection相簿 *@paramoriginal是否要原图 */ -(void)enumerateAssetsInAssetCollection:(PHAssetCollection*)assetCollectionoriginal:(BOOL)original { NSLog(@"相簿名:%@",assetCollection.localizedTitle); PHImageRequestOptions*options=[[PHImageRequestOptionsalloc]init]; //同步获得图片,只会返回1张图片 options.synchronous=YES; //获得某个相簿中的所有PHAsset对象 PHFetchResult<PHAsset*>*assets=[PHAssetfetchAssetsInAssetCollection:assetCollectionoptions:nil]; for(PHAsset*assetinassets){ //是否要原图 CGSizesize=original?CGSizeMake(asset.pixelWidth,asset.pixelHeight):CGSizeZero; //从asset中获得图片 [[PHImageManagerdefaultManager]requestImageForAsset:assettargetSize:sizecontentMode:PHImageContentModeDefaultoptions:optionsresultHandler:^(UIImage*_Nullableresult,NSDictionary*_Nullableinfo){ NSLog(@"%@",result); }]; } }
相关文章推荐
- iOS--app自定义相册--给图片重写exif数据-定义相册时间戳
- iOS App中调用相册中图片及获取最近的一张图片的方法
- iOS--app自定义相册--创建相簿,存储图片到手机
- iOS图片处理(一)调用系统相机和相册获取图片,给相机添加自定义覆盖物
- app 获取ios相册的图片
- iOS 视频录制 包括预览图片与视频还有写入自己自定义的App相册 微信小视频
- iOS App中调用相册中图片及获取最近的一张图片的方法
- iOS获取相册/相机图片-------自定义获取图片小控件
- iOS图片处理(一)————调用系统相机和相册获取图片,给相机添加自定义覆盖物
- iOS -- 摄像头/相册获取图片,压缩图片,上传服务器
- ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结
- [IOS]从相册或相机获取图片
- ios中摄像头/相册获取图片,压缩图片,上传服务器方法
- ios中摄像头/相册获取图片,图片压缩,图片上传
- ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结
- iOS中获取相册中图片的文件名
- ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结
- ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结
- IOS程序访问iPhone手机相册/相机来获取图片的方法
- ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结