gpt4 book ai didi

ios - 在后台线程中缩放图像崩溃 - UIGraphicsImageRenderer

转载 作者:搜寻专家 更新时间:2023-11-01 06:51:52 25 4
gpt4 key购买 nike

private func scale(image ciImage: CIImage?, for scale: CGFloat) -> UIImage {
guard let ciImage = ciImage else {
return UIImage()
}

let image = UIImage(ciImage: ciImage)
let size = CGSize(width: image.size.width * scale, height: image.size.height * scale)

let renderer = UIGraphicsImageRenderer(size: size)

return renderer.image(actions: { (context) in
image.draw(in: CGRect(origin: .zero, size: size))
})
}

我正在使用这种方法来缩放(并在此之前生成)图像。这是在后台线程中完成的,然后将结果分派(dispatch)回主线程。但是,在 image.draw 上——有时十分之一,应用程序会因 EXC_BAD_ACCESS 而崩溃。

我做错了什么?我可以在后台这样做吗?

谢谢

最佳答案

不要在后台线程中执行任何 UI 操作。所有 UI 更改都必须在主线程中完成

使用调度队列在主线程中工作。像这样尝试

DispatchQueue.main.async { 
image.draw(in: CGRect(origin: .zero, size: size))
}

查看 this 答案以了解我们为什么使用主线程来执行 UI 操作

关于ios - 在后台线程中缩放图像崩溃 - UIGraphicsImageRenderer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56649275/

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