如何从 PHAsset 提取中获取照片?

Posted

技术标签:

【中文标题】如何从 PHAsset 提取中获取照片?【英文标题】:How do I get photos from a PHAsset fetch? 【发布时间】:2014-11-28 08:19:56 【问题描述】:

我无法通过 PHAsset 提取的照片元数据列表获取实际照片。最终我想要一系列照片。

这是我的代码(最后一分钟在返回前的最后一行转换为 UIImage):

以下是一些输出:

(lldb) po rec
<PHMoment: 0x7f8c03d62820> 12A0DFC9-5B8C-4E25-A373-122A5F1E1D8A/L0/060 (null) assetCollectionType=3/0 [2014-07-14 04:28:16 +0000 - 2014-07-14 04:28:18 +0000]

(lldb) po fetchResult
<PHFetchResult: 0x7f8c03d292c0> count=5

(lldb) po firstObject
(instance_type = Builtin.RawPointer = 0x00007f8c03d8bce0 -> 0x0000000100e83170 (void *)0x0000000100e83288: PHAsset)
 
  instance_type = 0x00007f8c03d8bce0 -> 0x0000000100e83170 (void *)0x0000000100e83288: PHAsset

(lldb) po lastObject
(instance_type = Builtin.RawPointer = 0x00007f8c03d88be0 -> 0x0000000100e83170 (void *)0x0000000100e83288: PHAsset)
 
  instance_type = 0x00007f8c03d88be0 -> 0x0000000100e83170 (void *)0x0000000100e83288: PHAsset

(lldb) po myPhoto
 (instance_type = Builtin.RawPointer = 0x00007f8c03d8b570 -> 0x0000000100e83170 (void *)0x0000000100e83288: PHAsset)
(lldb)

这对我没有多大好处。 我想收集实际的 UIImages。

所以我尝试进行演员表:

let myPhoto: AnyObject = fetchResult.objectAtIndex(1)! as UIImage

但这给了我一个运行时崩溃/错误:

问题:如何从我的 fetch 中收集实际的 UIImages?

【问题讨论】:

【参考方案1】:

方法如下:

if url.hasPrefix("assets-library://asset") 
     let localIdentifier = url.componentsSeparatedByString("=")[1].componentsSeparatedByString("&")[0]
     let fetchResult = PHAsset.fetchAssetsWithLocalIdentifiers([localIdentifier], options: nil)

    if fetchResult.count > 0 
        if let asset = fetchResult.firstObject as? PHAsset 
            PHImageManager.defaultManager().requestImageForAsset(asset, targetSize: CGSize(width: 64, height: 64), contentMode: PHImageContentMode.Default, options: nil, resultHandler:  (image:UIImage?, info:[NSObject:AnyObject]?) -> Void in
                self.imageButton.setImage(image, forState: .Normal)
            )
        
    

【讨论】:

以上是关于如何从 PHAsset 提取中获取照片?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 5.2 中使用 PHAsset.fetchAssets(withLocalIdentifiers:) 从照片库中检索照片?

如何从 PHAsset 获取视频的缩略图?

照片框架 - 如何从 PHAsset 获取图像的 CLLocation?

如何从 MacOS 的照片库中获取所有 PHAsset

如何从我的照片流相册中获取照片

如何在 PHAsset 中添加图像并将其从照片库中删除?