PhotoKit详解

时间:2024-02-20 11:36:45

Photokit介绍

这篇主要介绍如何通过 Photokit获取数据

photokit.jpg
photokit.jpg

1,基类 PHObject

Photos 框架中的根类PHObject只有一个公开接口 localIdentifier,是对象唯一标志符.PHObject实现了-isEqual 和-hash方法.可以直接使用localIdentifier属性对PHObject及其子类对象进行对比是否同一个对象

2,数据类型

PHAsset 、PHAssetCollection、PHCollectionList 是Photos框架中的模型类

PHAsset :代表系统的一个图片,视频或者Live Photo
PHAssetCollection:是一组有序的资源集合,包括相册、moments、智能相册以及共享照片流.比如:系统相册里的时刻一个分类,用户创建的相册或者智能相册
PHCollectionList : 相册集合, 比如:时刻里的年或者包含用户创建的一个或者多个相册
表示一组PHCollection,而它本身也是一个PHCollection,因此PHCollection作为一个集合,可以包含其他集合
如下资源结构图:


jiegou.png
jiegou.png
2.1 PHAsset.h
2.1.1 PHAsset

代表系统的一个图片,视频或者Live Photo
属性介绍:

[1] mediaType :资源类型,图片或者音频或视频
 PHAssetMediaTypeUnknown = 0,
 PHAssetMediaTypeImage   = 1,
 PHAssetMediaTypeVideo   = 2,
 PHAssetMediaTypeAudio   = 3,
 
 [2] mediaSubtypes
 图片又包含全景图(Panorama)、HDR图片、屏幕截图、livePhoto .live photo 加3Dtouch效果 我们可以使用照片资源的 mediaSubtypes 属性验证资源库中的图像在捕捉时是否开启了 HDR,拍摄时是否使用了相机应用的全景模式
 
 PHAssetMediaSubtypeNone      = 0,
 
 // Photo subtypes
 PHAssetMediaSubtypePhotoPanorama
 PHAssetMediaSubtypePhotoHDR
 PHAssetMediaSubtypePhotoScreenshot
 PHAssetMediaSubtypePhotoLive
 PHAssetMediaSubtypePhotoDepthEffect
 
 // Video subtypes
 PHAssetMediaSubtypeVideoStreamed      = (1UL << 16),
 PHAssetMediaSubtypeVideoHighFrameRate = (1UL << 17),
 PHAssetMediaSubtypeVideoTimelapse
 
 [3] pixelWidth 像素宽度 pixelHeight 高度
 
 [4] creationDate 创建时间   modificationDate 修改时间  location 位置信息 duration时长
 
 [5] hidden 要验证一个资源是否被用户标记为收被隐藏,只要检查 PHAsset 实例的 hidden 属性即可。
 [6] Favorite  布尔值,用户是否标记资源为"收藏",我们平时浏览照片或视频,在下方点