Photos.framework学习笔记
来源:互联网 发布:mysql employees 编辑:程序博客网 时间:2024/05/21 20:26
概述
iOS8.0中引入了新的框架Photos.framework取代AssetsLibrary进行用户照片库图片资源的获取
1. 导入Photos.framework
2. 调用该框架
#import <Photos/Photos.h>
框架结构初探
- PHAsset: 代表照片库中的一个资源,用以提供资源的元数据。跟 ALAsset 类似,通过 PHAsset 可以获取和保存资源
- PHAssetCollection: 资源集合。表示一个相册或者一个时刻,或者是一个「智能相册(系统提供的特定的一系列相册,例如:最近删除,视频列表,收藏等等,如下图所示
- PHFetchResult: 表示一系列的资源结果集合,也可以是相册的集合,从?PHCollection 的类方法中获得
- PHImageManager: 用于处理资源的加载,加载图片的过程带有缓存处理,可以通过传入一个 PHImageRequestOptions 控制资源的输出尺寸等规格
- PHImageRequestOptions: 如上面所说,控制加载图片时的一系列参数
PHImageManager照片加载
PHImageManager API Reference
请求图像
- 获取指定尺寸的图片API Reference
// 返回图片的尺寸为targetSize,提供更快的响应速度(因为一般图片的实际尺寸都会比目标尺寸来的大)。- (PHImageRequestID)requestImageForAsset:(PHAsset *)asset targetSize:(CGSize)targetSize contentMode:(PHImageContentMode)contentMode options:(PHImageRequestOptions *)options resultHandler:(void (^)(UIImage *result, NSDictionary *info))resultHandler;
targetSize // 图像的尺寸定义
PHImageContentMode // 图像裁剪模式
PHImageRequestOptions // 图像管理器重新设置图像大小的配置
To serve your request more quickly, Photos may provide an image that is slightly larger than the target size—because such an image is already cached or because it can be generated more efficiently
该方法默认是异步执行。如果在后台线程中执行则可通过options属性中的synchronous属性设置为YES阻塞调用线程直到返回result Handler.
异步请求中,Photos可能会多次发消息给result handler。 首先会先调用handler block提供低分辨率的图片用于临时显示。直到高分辨率的图片就绪,则会再次发消息给result handler。而当ImageManager已经缓存原图时,则只会调用一次。 通过获取Info属性的PHImageResultIsDegradedKey 键可以判断图片是否为低分辨率。
Demo:
[PHImageManager defaultManager] requestImageForAsset:asset targetSize:CGSizeMake(200, 200) contentMode:PHImageContentModeAspectFit options:nil resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) { // info 字典提供了关于当前请求状态的信息 BOOL isLowQuality = [[info objectForKey:PHImageResultIsDegradedKey] boolValue]; }
- 获取原图API Reference
- (PHImageRequestID)requestImageDataForAsset:(PHAsset *)asset options:(PHImageRequestOptions *)options resultHandler:(void (^)(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info))resultHandler;
调用该方法则会获取原图,resultHandler中会返回imageData,与上一方法不同,只会调用一次回调。
23th,Sep,2016
r: 感觉这篇博客会比较长,每一块慢慢补了。
参考资料
Photos API Reference
Objc中国–照片框架
iOS 开发之照片框架详解
iOS8.0 使用Photos.framework对相册的常用操作
- Photos.framework学习笔记
- Photos.frameWork
- Photos Framework介绍
- iOS Photos.framework 使用
- iOS8 Photos Framework
- Photos Framework 新照片框架
- Taking Photos Simply笔记
- Photos框架学习备忘
- Swift基础(三十三)Photos.framework框架
- 基于Photos.framework自定制相册swift
- .NET Framework学习笔记
- .NET Framework学习笔记
- zend framework学习笔记
- Zend Framework学习笔记
- play framework学习笔记
- Framework 学习笔记
- express framework 学习笔记
- Entity Framework学习笔记
- 十二星座如何玩转O盟
- 机器学习之四:SVM简介
- 【转载】详解微信小程序开发教程
- 论人不地道,我只佩服TT——北漂18年(68)
- C++培训_003_数据类型_结构体_基础输入输出
- Photos.framework学习笔记
- 线程池ThreadPoolExecutor的例子,Executors.newFixedThreadPool实现
- 后台获取jsp数组方法
- 活久见的重构 - iOS 10 UserNotifications 框架解析
- mvel2.0语法指南
- 首个微信小程序开发教程!
- Java日期
- PHP开发因BOM产生的乱码问题
- memcache的最佳实践方案