iOS Photos.framework 使用
来源:互联网 发布:linux如何挂载磁盘 编辑:程序博客网 时间:2024/05/17 09:17
1.查询相册使用权限
PHAuthorizationStatus st = [PHPhotoLibrary authorizationStatus];if (PHAuthorizationStatusDenied == st || PHAuthorizationStatusRestricted == st) { NSLog(@"相册不允许访问");}if (PHAuthorizationStatusAuthorized == st || PHAuthorizationStatusNotDetermined == st) { NSLog(@"相册允许访问or用户未选择");}//相册变更[[PHPhotoLibrary sharedPhotoLibrary] registerChangeObserver:self];//回调方法如下,不过这个地方是有一个坑的,就是这个回调是在一个子线程里面,如果你想要对UI进行操作的话,则必须回调主线程//相册变化回调- (void)photoLibraryDidChange:(PHChange *)changeInstance { dispatch_sync(dispatch_get_main_queue(), ^{ // your codes });}
2.创建自己的相册
[[PHPhotoLibrary sharedPhotoLibrary]performChanges:^{ [PHAssetCollectionChangeRequest creationRequestForAssetCollectionWithTitle:@"相册名字"];} completionHandler:^(BOOL success, NSError * _Nullable error) {}];
3.获取自己创建的相册
PHFetchResult *userAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil];PHAssetCollection *collection = nil;for (PHAssetCollection *accc in userAlbums) { if ([accc.localizedTitle isEqualToString:@"相册名字"]) { collection = accc; }}
4.保存图片到自己相册 —-删除指定相片类似
- (void)addCustomAsset:(UIImage *)image collection:(PHAssetCollection *)collection completionHandler:(void (^)(void))successBlock failture:(void (^)(NSString * _Nonnull))failtureBlock{ //执行变化请求 [self.photoLibaray performChanges:^{ //如果相册允许操作 if([collection canPerformEditOperation:PHCollectionEditOperationAddContent]){ //创建资源请求对象 PHAssetChangeRequest * assetChangeRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:image]; //创建相册请求对象 PHAssetCollectionChangeRequest * groupChangeRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:collection]; //向相册中添加资源。要删除相片,换个方法即可 [groupChangeRequest addAssets:@[assetChangeRequest.placeholderForCreatedAsset]]; } }completionHandler:^(BOOL success, NSError * _Nullable error) { if (success == YES)//成功 { successBlock();return; } //失败 failtureBlock(error.localizedDescription); }];}
5.保存视频到自己相册
- (void)addCustomAsset2:(NSURL *)url collection:(PHAssetCollection *)collection completionHandler:(void (^)(void))successBlock failture:(void (^)(NSString * _Nonnull))failtureBlock { //执行变化请求 [self.photoLibaray performChanges:^{ //如果相册允许操作 if([collection canPerformEditOperation:PHCollectionEditOperationAddContent]){ //创建资源请求对象 PHAssetChangeRequest * assetChangeRequest = [PHAssetChangeRequest creationRequestForAssetFromVideoAtFileURL:url]; //创建相册请求对象 PHAssetCollectionChangeRequest * groupChangeRequest = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:collection]; //向相册中添加资源 [groupChangeRequest addAssets:@[assetChangeRequest.placeholderForCreatedAsset]]; } }completionHandler:^(BOOL success, NSError * _Nullable error) { if (success == true)//成功 { successBlock();return; } //失败 failtureBlock(error.localizedDescription); }];}
6.保存图片/视频到相机胶卷
UISaveVideoAtPathToSavedPhotosAlbum(self.videoPath, self, @selector(video:didFinishSavingWithError:contextInfo:), NULL);UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);//图片保存回调- (void)image: (UIImage *) image didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo { NSLog(@"保存成功与否提示");}//录像保存完毕- (void)video:(NSString *)videoPath didFinishSavingWithError:(NSError *)error contextInfo: (void *)contextInfo { NSLog(@"保存成功与否提示");}
7.获取自己相册的图片
PHFetchOptions *fetchOptions = [[PHFetchOptions alloc] init];//按创建日期排序,最新在前面fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];//筛选图片,只要图片。只要视频mediaType=2fetchOptions.predicate = [NSPredicate predicateWithFormat:@"mediaType=1"];//collection 可以从前面方法获取到PHFetchResult *albumsPic = [PHAsset fetchAssetsInAssetCollection:collection options:fetchOptions];//获取第二张图PHAsset *asset = albumsPic[1];PHCachingImageManager *imageManager = [[PHCachingImageManager alloc] init];//可以设置options,获取到图片的质量// PHImageRequestOptions *options = [PHImageRequestOptions new];// options.version = PHImageRequestOptionsVersionCurrent;// options.deliveryMode = PHImageRequestOptionsDeliveryModeFastFormat;// options.resizeMode = PHImageRequestOptionsResizeModeFast;[imageManager requestImageForAsset:asset targetSize:AssetGridThumbnailSize contentMode:PHImageContentModeDefault options:nil//options resultHandler:^(UIImage *result, NSDictionary *info) { self.imageView.image = result; }];
8.获取胶卷所以图片/视频/音频
PHFetchOptions *options = [[PHFetchOptions alloc] init]; /// 按创建日期排序options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];//获取胶卷所有图片。要获取视频,把类型改为PHAssetMediaTypeVideo,音频的为PHAssetMediaTypeAudioPHFetchResult *result = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:options];//枚举里面的内容[result enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { PHAsset *asset = (PHAsset *)obj;}];
9.只能相册获取
//获取所有智能相册PHFetchResult *smartAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];[smartAlbums enumerateObjectsUsingBlock:^(PHAssetCollection * _Nonnull collection, NSUInteger idx, BOOL *stop) { NSLog(@"相册名字:%@", collection.localizedTitle);}];//智能相册的title不出意外都是英文,下面提供一个对应的中文名- (NSString *)transformAblumTitle:(NSString *)title{ if ([title isEqualToString:@"Slo-mo"]) { return @"慢动作"; } else if ([title isEqualToString:@"Recently Added"]) { return @"最近添加"; } else if ([title isEqualToString:@"Favorites"]) { return @"最爱"; } else if ([title isEqualToString:@"Recently Deleted"]) { return @"最近删除"; } else if ([title isEqualToString:@"Videos"]) { return @"视频"; } else if ([title isEqualToString:@"All Photos"]) { return @"所有照片"; } else if ([title isEqualToString:@"Selfies"]) { return @"自拍"; } else if ([title isEqualToString:@"Screenshots"]) { return @"屏幕快照"; } else if ([title isEqualToString:@"Camera Roll"]) { return @"相机胶卷"; } return nil;}
0 0
- iOS Photos.framework 使用
- Photos.frameWork
- iOS8.0 使用Photos.framework对相册的常用操作
- 使用Photos.framework对相册的常用操作
- Photos Framework介绍
- Photos.framework学习笔记
- iOS8 Photos Framework
- Photos Framework 新照片框架
- iOS AssetsLibrary和Photos的使用总结(2): 原图获取
- iOS开发------简单实现图片多选功能(Photos.framework篇)
- ios framework 使用注意事项
- ios 制作使用FrameWork
- Swift基础(三十三)Photos.framework框架
- 基于Photos.framework自定制相册swift
- iOS之相册新框架<Photos/Photos.h>
- iOS<Photos/Photos.h>与<AssetsLibrary/AssetsLibrary.h>and 相机
- iOS:<Photos/Photos.h>获取相册视频以及图片
- iOS之相册新框架<Photos/Photos.h>
- CF#255 C. Almost Arithmetical Progression (DP)
- jmap命令详解
- Windows Server 2008远程桌面端口更改方法
- 使用高德地图获取拍照图片地理位置
- 关于C#的委托
- iOS Photos.framework 使用
- c++多个源文件共用一个全局变量(extern 的用法)
- python装饰器详解
- Delphi构造函数和析构函数
- scala =>符号含义总结
- 深度探索new和delete
- Log4Net简单应用
- 雅虎团队经验:网站页面性能优化的34条黄金守则
- 从源码分析RxJava在Android里线程切换的实现