我的代码如下。它正在发送重复的照片1)高品质和2)低品质。只想了解为什么这个库要这样做?
PHImageManager.default().requestImage(for: asset, targetSize: size, contentMode: .aspectFit, options: nil) { result, info in
guard let image = result else {
return
}
self.sendPhoto(image)
}
修正为强制选项发送质量
fileprivate func imageRequestOptions() -> PHImageRequestOptions {
let requestOption = PHImageRequestOptions()
requestOption.deliveryMode = .highQualityFormat
return requestOption
}
PHImageManager.default().requestImage(for: asset, targetSize: size, contentMode: .aspectFit, options: self.imageRequestOptions()) { result, info in
guard let image = result else {
return
}
self.sendPhoto(image)
print("sendPhoto iOS 11.0 * asset")
}
答案 0 :(得分:0)
摘自Apple文档
对于异步请求,Photos可能多次调用您的结果处理程序块。照片首先调用该块,以提供适合临时显示的低质量图像,同时准备高质量图像。 (如果立即可获得低质量的图像数据,则可能在方法返回之前进行第一次调用。)当高质量的图像准备就绪时,Photos会再次调用结果处理程序以提供该图像。如果图像管理器已经完全高质量地缓存了请求的图像,则Photos只会调用一次结果处理程序。结果处理程序的info参数中的PHImageResultIsDegradedKey键指示“照片”何时提供临时的低质量图像。 您可以对照片和视频资产使用此方法-对于视频资产,图像请求会提供缩略图或海报框。
也许这是他们的事。我想我们应该注意这种情况