Swift4.0--Photos框架的使用附从相簿中获取图片

本文介绍如何在Swift4.0中利用Photos框架从相簿获取图片,包括权限验证、保存图片到相册、通过标识符获取图片资源及原图缩略图的方法。Photos框架提供了更现代且高效的方式来与用户照片库交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先发布Demo链接
Photos从相簿中获取图片

效果展示

这里写图片描述

这里写图片描述
(一) Photos简介

在iOS 8之前,开发者只能用 AssetsLibrary
框架访问的用户的照片库。几年以来,相机应用和照片应用发生了显著的变化,增加了许多新特性,包括按时刻来组织照片的方式。但与此同时,AssetsLibrary
框架却没有跟上步伐。 随着 iOS 8 的到来,苹果给我们提供了一个现代化的框架 Photos,它比 AssetsLibrary
表现更好,并且拥有让应用和设备照片库无缝工作的特性。

(二)解释

几个常用的类:

PHAsset : 代表照片库中的一个资源,跟 ALAsset 类似,通过 PHAsset
可以获取和保存资源。每个PHAsset就是一张图片的详细信息,包括图片、位置、时间等。

PHFetchOptions : 获取资源时的参数,可以传 nil,即使用系统默认值。

PHFetchResult : 表示一系列的资源集合,也可以是相册的集合。

PHAssetCollection :
表示一个相册或者一个时刻,或者是一个智能相册(系统提供的特定的一系列相册,例如:最近删除,视频列表,收藏等等)。

PHImageManager : 用于处理资源的加载,加载图片的过程带有缓存处理,可以通过传入一个
PHImageRequestOptions 控制资源的输出尺寸等规格。

enum PHAssetCollectionType : Int {
    case Album //从 iTunes 同步来的相册,以及用户在 Photos 中自己建立的相册
    case SmartAlbum //经由相机得来的相册
    case Moment //Photos 为我们自动生成的时间分组的相册
}

enum PHAssetCollectionSubtype : Int {
    case AlbumRegular //用户在 Photos 中创建的相册,也就是我所谓的逻辑相册
    case AlbumSyncedEvent //使用 iTunes 从 Photos 照片库或者 iPhoto 照片库同步过来的事件。然而,在iTunes 12 以及iOS 9.0 beta4上,选用该类型没法获取同步的事件相册,而必须使用AlbumSyncedAlbum。
    case AlbumSyncedFaces //使用 iTunes 从 Photos 照片库或者 iPhoto 照片库同步的人物相册。
    case AlbumSyncedAlbum //做了 AlbumSyncedEvent 应该做的事
    case AlbumImported //从相机或是外部存储导入的相册,完全没有这方面的使用经验,没法验证。
    case AlbumMyPhotoStream //用户的 iCloud 照片流
    case AlbumCloudShared //用户使用 iCloud 共享的相册
    case SmartAlbumGeneric //文档解释为非特殊类型的相册,主要包括从 iPhoto 同步过来的相册。由于本人的 iPhoto 已被 Photos 替代,无法验证。不过,在我的 iPad mini 上是无法获取的,而下面类型的相册,尽管没有包含照片或视频,但能够获取到。
    case SmartAlbumPanoramas //相机拍摄的全景照片
    case SmartAlbumVideos //相机拍摄的视频
    case SmartAlbumFavorites //收藏文件夹
    case SmartAlbumTimelapses //延时视频文件夹,同时也会出现在视频文件夹中
    case SmartAlbumAllHi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值