Photos(PHImageManager)

PHImageManager是PHAsset管理器,它能从PHAsset获取你想要的数据,如UIImage、NSData等。

1 获取PHImageManager

/// 获取单例PHImageManager
///
/// - returns: PHImageManager
public class func defaultManager() -> PHImageManager

2 获取照片

/// 获取UIImage
///
/// - parameter asset : PHAsset
/// - parameter targetSize : CGSize图片尺寸
/// - parameter contentMode : PHImageContentMode图片模式
/// - parameter options : PHImageRequestOptions加载方式
/// - parameter resultHandler : (UIImage?, [NSObject : AnyObject]?) -> Void 闭包回调返回数据
///
/// - returns: PHImageRequestID加载标示符
public func requestImageForAsset(asset: PHAsset, targetSize: CGSize, contentMode: PHImageContentMode, options: PHImageRequestOptions?, resultHandler: (UIImage?, [NSObject : AnyObject]?) -> Void) -> PHImageRequestID

/// 获取NSData
///
/// - parameter asset : PHAsset
/// - parameter contentMode : PHImageContentMode加载方式
/// - parameter resultHandler : (NSData?, String?, UIImageOrientation, [NSObject : AnyObject]?) -> Void 闭包回调返回数据
///
/// - returns: PHImageRequestID
public func requestImageDataForAsset(asset: PHAsset, options: PHImageRequestOptions?, resultHandler: (NSData?, String?, UIImageOrientation, [NSObject : AnyObject]?) -> Void) -> PHImageRequestID

3 获取视频

/// 获取视频AVPlayerItem
///
/// - parameter asset : PHAsset
/// - parameter options : PHVideoRequestOptions加载方式
/// - parameter resultHandler : (AVPlayerItem?, [NSObject : AnyObject]?) -> Void 闭包返回数据
///
/// - returns: PHImageRequestID加载标示符
public func requestPlayerItemForVideo(asset: PHAsset, options: PHVideoRequestOptions?, resultHandler: (AVPlayerItem?, [NSObject : AnyObject]?) -> Void) -> PHImageRequestID

/// 获取视频AVPlayerItem
///
/// - parameter asset : PHAsset
/// - parameter options : PHVideoRequestOptions加载方式
/// - parameter exportPreset : 名称
/// - parameter resultHandler : (AVAssetExportSession?, [NSObject : AnyObject]?) -> Void 闭包返回数据
///
/// - returns: PHImageRequestID加载标示符
public func requestExportSessionForVideo(asset: PHAsset, options: PHVideoRequestOptions?, exportPreset: String, resultHandler: (AVAssetExportSession?, [NSObject : AnyObject]?) -> Void) -> PHImageRequestID

/// 获取AVAsset
///
/// - parameter asset : PHAsset
/// - parameter options : PHVideoRequestOptions加载方式
/// - parameter resultHandler : (AVAsset?, AVAudioMix?, [NSObject : AnyObject]?) -> Void 闭包返回数据
///
/// - returns: PHImageRequestID加载标示符
public func requestAVAssetForVideo(asset: PHAsset, options: PHVideoRequestOptions?, resultHandler: (AVAsset?, AVAudioMix?, [NSObject : AnyObject]?) -> Void) -> PHImageRequestID

4 获取生活照片

/// 获取生活照片
///
/// - parameter asset : PHAsset
/// - parameter targetSize : CGSize 目标大小
/// - parameter contentMode : PHImageContentMode 显示模式
/// - parameter options : PHLivePhotoRequestOptions 加载设置
/// - parameter resultHandler: (PHLivePhoto?, [NSObject : AnyObject]?) -> Void 闭包返回数据
///
/// - returns: PHImageRequestID
@available(iOS 9.1, *)
public func requestLivePhotoForAsset(asset: PHAsset, targetSize: CGSize, contentMode: PHImageContentMode, options: PHLivePhotoRequestOptions?, resultHandler: (PHLivePhoto?, [NSObject : AnyObject]?) -> Void) -> PHImageRequestID

5 取消加载

/// 取消获取数据
///
/// - parameter requestID : PHImageRequestID 加载标示符
///
/// - returns: void
public func cancelImageRequest(requestID: PHImageRequestID)

 


其他

源代码

Swift

参考资料

Photos Framework Reference

PHImageManager Class Reference

文档修改记录

时间描述
2016-01-05博文完成

版权所有

CSDN:http://blog.csdn.net/y550918116j

GitHub:https://github.com/937447974/Blog

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`PHImageManager` 是一个用于管理照片库中的图片和视频的类。它可以用来获取图片、视频资源以及资源的元数据,并且可以进行缓存、预加载和取消加载等操作。 下面是一个示例代码:获取相册中最新的一张照片。 ``` import Photos // 获取最新的一张照片 func fetchLatestPhoto() { let fetchOptions = PHFetchOptions() fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)] fetchOptions.fetchLimit = 1 let fetchResult = PHAsset.fetchAssets(with: .image, options: fetchOptions) if let latestPhoto = fetchResult.firstObject { let imageManager = PHImageManager.default() let requestOptions = PHImageRequestOptions() requestOptions.deliveryMode = .highQualityFormat requestOptions.isSynchronous = true imageManager.requestImage(for: latestPhoto, targetSize: CGSize(width: 300, height: 300), contentMode: .aspectFill, options: requestOptions) { image, _ in // 在这里处理获取到的图片 if let image = image { print("获取到最新的一张照片:\(image)") } } } } ``` 在上面的代码中,我们使用 `PHAsset.fetchAssets()` 方法获取相册中的资源,然后使用 `PHImageManager.requestImage()` 方法获取最新的一张照片。`requestImage()` 方法的第一个参数是要获取的照片或视频资源,第二个参数是目标大小,第三个参数是内容模式,第四个参数是请求选项。在请求选项中,我们设置了 `deliveryMode` 属性为 `highQualityFormat`,表示要获取高质量的照片,而 `isSynchronous` 属性为 `true`,表示要同步获取照片。 当 `requestImage()` 方法获取到照片后,会回调传入的闭包,我们可以在闭包中对获取到的照片进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值