gpt4 book ai didi

ios - RequestImage 的结果处理程序调用了两次

转载 作者:行者123 更新时间:2023-11-28 09:24:40 26 4
gpt4 key购买 nike

我有一组图片资源。我必须将这些 Assets 转换为图像,将它们添加到数组并将它们上传到 Firebase 数据库。我有两个问题。

问题 1:

在自定义 UICollectionViewCell 中,我显示了用户选择的所有图像,当我从照片中选择了 4 张图像时,我在单元格中看到了 4 张图像(我使用的是自定义框架)。现在,当我调用 requestImage 方法时,我得到了数组中双倍数量的图像,这些图像应该从 Assets 数组中转换每个 Assets 并将其存储到名为 UIImage 的数组中assetsTurnedIntoImages。我阅读了更多关于它的信息,它与 PHImageRequestOptions 相关,如果它的 isSynchronous 属性返回 truefalse,那或者如果 PHImageRequestOptionsnil。现在,显然我没有得到任何东西,因为我的代码仍然无法正常工作。

问题 2:

正如您从下面的代码中看到的,targetSize 为我提供了缩略图大小。当我将图像上传到存储器时,我不需要缩略图,我需要它的原始大小。如果我将它设置为 PHImageManagerMaximumSize,我会得到一个错误:

"Connection to assetsd was interrupted or assetsd died”

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "PhotoPostCVCell", for: indexPath) as! PhotoPostCVCell
if let takenImage = cameraPhotoUIImage
{
cell.cellImage.image = takenImage
}
if assets.count > 0
{
let asset = assets[indexPath.row]
let requestOptions = PHImageRequestOptions()
requestOptions.isSynchronous = true // synchronous works better when grabbing all images
requestOptions.deliveryMode = .opportunistic
imageManager.requestImage(for: asset, targetSize: CGSize(width: 100, height: 100), contentMode: .aspectFill, options: requestOptions)
{ (image, _) in
DispatchQueue.main.async {
print("WE ARE IN")
cell.cellImage.image = image!
self.assetsTurnedIntoImages.append(image!)
}
}
}
return cell
}

最佳答案

更改选项可以解决问题:

options.deliveryMode = .highQualityFormat

我在源代码中找到了解决方案:

@available(iOS 8, iOS 8, *)
public enum PHImageRequestOptionsDeliveryMode : Int {


@available(iOS 8, *)
case opportunistic = 0 // client may get several image results when the call is asynchronous or will get one result when the call is synchronous

@available(iOS 8, *)
case highQualityFormat = 1 // client will get one result only and it will be as asked or better than asked

@available(iOS 8, *)
case fastFormat = 2 // client will get one result only and it may be degraded
}

关于ios - RequestImage 的结果处理程序调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46055206/

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