PhotoKit

PhotoKit

可参考文档:

PhotoKit介绍如下:

Work with image and video assets managed by the Photos app, including those from iCloud Photos and Live Photos.

01
PhotoKit 对象模型

PhotoKit 定义了与系统的 Photos 应用内展现给用户的模型对象相一致的实体图表。这些照片实体都是轻量级的不可变对象。所有的 PhotoKit 对象都是继承自 PHObject 抽象基类,其公共接口只提供了一个 localIdentifier 属性。

PHAsset 表示用户照片库中一个单独的资源,用以提供资源的元数据。

成组的资源叫做资源集合,用 PHAssetCollection 类表示。一个单独的资源集合可以是照片库中的一个相册或者一个时刻,或者是一个特殊的“智能相册”。这种智能相册包括所有的视频集合,最近添加的项目,用户收藏,所有连拍照片等等。PHAssetCollectionPHCollection 的子类。

PHCollectionList 表示一组的 PHCollections。因为它本身就是 PHCollection,所以集合列表可以包含其他集合列表,它们允许复杂的集合继承。实际上,我们可以在照片应用的时刻栏目中看到它:照片 — 时刻 — 精选 — 年度,就是一个例子。

PHAsset

ALAsset 或者 PHAsset 代表着由 iPhone 相册 app 管理的视频和图片对象。ALAsset 在 iOS9.0 版本已经被弃用,PHAsset 是 ALAsset 的替代。和手机相册(Photos)进行的交互,比如选择图片上传,都会涉及到 ALAsset/PHAsset 相关的概念。

//使用 ALAsset 需要引入 AssetsLibrary。 AssetsLibrary 在 iOS9.0 已经过期。
#import <AssetsLibrary/AssetsLibrary.h>
//使用 PHAsset 需要引入Photos Framework,支持 iOS8.0 及以上版本。
#import <Photos/Photos.h> 

PHAsset表示的是:

A representation of an image, video, or Live Photo in the Photos library.

官方文档中的一些说明:
1.使用Fetching Assets中列出的类方法来获取PHAsset实例
2.Assets只包含元数据metadata。底层的image或者video数据可能没有存储在本地的设备上。然而,根据你的使用目的,你可能并不需要下载这些数据。如果你需要显示一个缩略图的collection视图,Photos framework可以用来管理下载,生成和缓存thumbnail。请参考PHImageManager
3.Asset对象是不可变的。要编辑asset的元数据(例如将其添加到favorite photo)中,可创建一个PHAssetChangeRequest。更多信息参考PHPhotoLibrary

重要属性:

  • mediaType 资源类型,图片或者音频或视频
typedef NS_ENUM(NSInteger, PHAssetMediaType) {
    PHAssetMediaTypeUnknown = 0,
    PHAssetMediaTypeImage   = 1,
    PHAssetMediaTypeVideo   = 2,
    PHAssetMediaTypeAudio   = 3,
};

  • mediaSubtypes

    The subtypes of the asset, identifying special kinds of assets such as panoramic photo or high-framerate video.

照片加载

PHImageManager表示的是:

An object that facilitates retrieving or generating preview thumbnails and asset data.
一个有助于检索或生成预览缩略图和asset数据的对象。

可使用方法来完整尺寸的照片asset或缩略图图像,或者检索AVFoundation对象以播放,导出和操作视频asset
加载图像或者视频数据

image manager会缓存asset image和它提供的data。因此以后对具有相似参数的相同asset的请求将更快地返回结果。

If you need to load image data for many assets together, use the PHCachingImageManager class to “preheat” the cache by loading images you expect to need soon. For example, when populating a collection view with photo asset thumbnails, you can cache images ahead of the current scroll position.
如果您需要一起加载许多asset的图像数据,请使用PHCachingImageManager类通过加载您期望很快需要的图像来“预热”缓存。 例如,当使用照片asset缩略图填充收藏夹视图时,可以将图像缓存在当前滚动位置之前。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值