ios 照片库访问所有照片导致PHImageManager获取图像缩略图

ecbunoof  于 2023-02-20  发布在  iOS
关注(0)|答案(1)|浏览(164)

下面是我如何从图片库中获取图片。当我在应用程序的系统设置中授予照片访问权限“选定照片”时,图片的大小正如预期的那样最大。然而,当我将照片访问权限更改为“所有照片”时,下面的代码会生成原始图片的缩略图。应用程序运行在iOS 15上。没有配置iCloud。有人能告诉我这是怎么回事吗?

private func loadImage(assetId: String, done: @escaping (Image?) -> Void)  {
    
    let fetchResults: PHFetchResult<PHAsset> =
        PHAsset.fetchAssets(withLocalIdentifiers: [assetId], options: nil)

    guard let asset: PHAsset = fetchResults.firstObject else {
        return
    }

    let manager = PHImageManager()
    manager.requestImage(for: asset, targetSize: PHImageManagerMaximumSize,
                            contentMode: .aspectFit, options: nil) { (uiImage, _) in
        if let uiImage = uiImage {
            done(Image(uiImage: uiImage))
        } else {
            done(nil)
        }
    }
}
anauzrmj

anauzrmj1#

一般来说,我可以理解为什么图像质量取决于访问级别。我无法找到任何相关文档。但我确实发现,请求的deliveryMode也很重要。当我将以下选项添加到requestImage调用时,问题得到了解决。

let requestOptions = PHImageRequestOptions()
requestOptions.deliveryMode = .highQualityFormat
let manager = PHImageManager()
manager.requestImage(for: asset, targetSize: PHImageManagerMaximumSize,contentMode: .aspectFit, options: requestOptions) { (uiImage, _) in
    //do something
}

相关问题