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

Posted

技术标签:

【中文标题】照片框架 - 如何从 PHAsset 获取图像的 CLLocation?【英文标题】:Photos Framework - How to obtain CLLocation of image from PHAsset? 【发布时间】:2014-11-08 05:40:07 【问题描述】:

我能够从 PHFetchResults 成功获取图像并将其很好地加载到 UIImage 中,但是当我尝试获取图像的位置时,出现错误:

“致命错误:在解包可选值时意外发现 nil”在运行时的 NSLog 语句中。
var imageAsset:PHAsset = self.photosAssetFetchResult[self.index] as PHAsset
NSLog("Location is %@", imageAsset.location)

如果我将上面的NSLog 语句替换为以下语句以获取描述(或任何其他属性,如长度、像素尺寸等 NSLog 正确返回它),它不会引发错误。

NSLog("Description is %@", imageAsset.Description)

我尝试使用 PHImageManger.requestImageDataForAsset 等。我得到了许多其他属性,如下所示,但位置。

[Exif: 
    ColorSpace = 1;
    ComponentsConfiguration =     (
        1,
        2,
        3,
        0
    );
    ExifVersion =     (
        2,
        2,
        1
    );
    FlashPixVersion =     (
        1,
        0
    );
    PixelXDimension = 1280;
    PixelYDimension = 960;
    SceneCaptureType = 0;
, ColorModel: RGB, DPIWidth: 72, Depth: 8, Orientation: 1, DPIHeight: 72, PixelHeight: 960, PixelWidth: 1280, TIFF: 
    Orientation = 1;
    ResolutionUnit = 2;
    XResolution = 72;
    YResolution = 72;
]

请指教。

【问题讨论】:

【参考方案1】:

这是一个真正的错误。我使用的资产没有位置。完全相同的代码适用于 iPhone 4 和 iPhone 6 拍摄的照片。

【讨论】:

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

如何为从照片框架获取的 PHAsset 添加分页?

获取 PHAsset 的本地文件路径

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

如何从 PHAsset 获取原始图像和媒体类型?

iOS 8 照片框架:从 PHAsset 获取文件名

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