gpt4 book ai didi

swift - 如何从 iCloud 下载图像而不重新保存?

转载 作者:行者123 更新时间:2023-11-30 10:28:03 25 4
gpt4 key购买 nike

我在尝试从图库中选取照片时遇到了问题(当我选取上传到 iCloud 的图像时应用程序崩溃)。所以我的第一个解决方案是检查图像是否在设备上,如果没有,则从 iCloud 下载它。

我使用了这段代码

let manager = PHImageManager.default()
let requestOptions = PHImageRequestOptions()
requestOptions.resizeMode = .exact
requestOptions.deliveryMode = .highQualityFormat;

// Request Image
manager.requestImageData(for: asset, options: requestOptions, resultHandler: { (data, str, orientation, info) -> Void in
// Do somethign with Image Data
})

在这种情况下我得到了 imageData,但如果我想保存它,它会保存到新照片中。因此,我在照片中获取图像的副本,而不是获取存储在设备上的原始图像

所以我的问题是如何下载图像而不重新保存它。基本上我想要与照片应用程序相同的行为(当照片不在设备上时,它会下载照片并将其保存到同一张图片中,而不是创建它的副本)

最佳答案

我遇到了这个问题,这里有一个解决方法:

设置isNetworkAccessAllowed:

requestOptions.isNetworkAccessAllowed = false

这是因为您需要确保我们不会从 iCloud 获取它。此时,如果没有下载图片,则resultHandler中的data应该为nil:

manager.requestImageData(for: PHAsset(), options: requestOptions, resultHandler: { (data, str, orientation, info) -> Void in
if let fetchedData = data {
// the image is already downloaded
} else {
// the image is not downloaded...
// now what you should do is to set isNetworkAccessAllowed to true
// and make a new request to get it from iCloud.
}
})

此外,您可以利用 PHImageResultIsInCloudKey :

manager.requestImageData(for: PHAsset(), options: requestOptions, resultHandler: { (data, str, orientation, info) -> Void in
if let keyNSNumber = info?[PHImageResultIsInCloudKey] as? NSNumber {
if keyNSNumber.boolValue {
// its on iCloud...
// read the "keep in mind" below note,
// now what you should do is to set isNetworkAccessAllowed to true
// and make a new request.
} else {
//
}
}
})

PHImageResultIsInCloudKey 中所述文档,请记住:

If true, no image was provided, because the asset data must be downloaded from iCloud. To download the data, submit another request, and specify true for the isNetworkAccessAllowed option.

关于swift - 如何从 iCloud 下载图像而不重新保存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59722960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com