从 PHAsset 获取已编辑照片的 URL

Posted

技术标签:

【中文标题】从 PHAsset 获取已编辑照片的 URL【英文标题】:Get an edited photo's URL from PHAsset 【发布时间】:2017-10-27 20:06:44 【问题描述】:

我正在尝试使用此代码从 PHAsset 获取照片的 URL。

 let options: PHContentEditingInputRequestOptions = PHContentEditingInputRequestOptions()
 options.canHandleAdjustmentData = (adjustmeta: PHAdjustmentData) -> Bool in
          return true
  

  asset.requestContentEditingInput(with: options, completionHandler:  (contentEditingInput, info) in
          guard let url = contentEditingInput?.fullSizeImageURL else 
               observer.onError(PHAssetError.imageRequestFailed)
               return
          
          /// Using this `url`
  )

大部分照片都可以很好地使用此代码。

当我在“相机”应用中拍照并在“照片”应用中旋转照片,然后在我的应用中选择旋转后的照片时,此代码会返回原始照片 URL,而不是旋转后的版本。

如何从PHAsset获取编辑后照片的本地网址?

【问题讨论】:

【参考方案1】:

尝试将您的回报更改为“false

如果您的块返回 true,照片将提供原始资产数据 用于编辑。您的应用程序使用调整数据来更改、添加或 重新应用以前的编辑。 (例如,调整数据可能描述 应用于照片的滤镜。您的应用会重新应用这些过滤器并 允许用户更改过滤器参数、添加新过滤器或 删除过滤器。)

如果您的块返回 false,则照片提供最新的资产 数据——所有先前编辑的渲染输出——用于编辑。

https://developer.apple.com/documentation/photos/phcontenteditinginputrequestoptions/1624055-canhandleadjustmentdata

 let options: PHContentEditingInputRequestOptions = PHContentEditingInputRequestOptions()
 options.canHandleAdjustmentData = (adjustmeta: PHAdjustmentData) -> Bool in
          return false
  

  asset.requestContentEditingInput(with: options, completionHandler:  (contentEditingInput, info) in
          guard let url = contentEditingInput?.fullSizeImageURL else 
               observer.onError(PHAssetError.imageRequestFailed)
               return
          
          /// Using this `url`
  )

【讨论】:

太棒了!我们实际上遇到了同样的问题并开始深入研究文档并找到了这个。很高兴我们能提供帮助!

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

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

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

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

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

PHAsset 无法获取

快速检测从照片库中删除的图像