我有一个奇怪的问题,从我的照片库中裁剪照片后,它无法从应用程序显示。运行此代码后,它给了我这个错误:



这是我用来裁剪和显示的代码。 (输入图像是 CIImage)



更多信息:调试打印输入图像和更正图像的范围



有趣的是,当我使用 Xcode 设置断点时,我能够正确预览裁剪后的图像。我不确定 CIImage 的这个范围是什么,但是当我将裁剪的图像分配给它时 UIMageView 不喜欢它。知道这个范围是做什么的吗?

最佳答案

我遇到了你描述的同样问题。由于 UIKit/CoreImage 中的一些奇怪行为,我需要先将 CIImage 转换为 CGImage。我注意到只有当我对 CIImage 应用一些过滤器时才会发生这种情况,如下所述。

let image = /* my CIImage */
let goodImage = UIImage(ciImage: image)
uiImageView.image = goodImage // works great!


let image = /* my CIImage after applying 5-10 filters */
let badImage = UIImage(ciImage: image)
uiImageView.image = badImage // empty view!

我就是这样解决的。
let ciContext = CIContext()
let cgImage = self.ciContext.createCGImage(image, from: image.extent)
uiImageView.image = UIImage(cgImage: cgImage) // works great!!!

正如其他评论者所说,要小心创建 CIContext 过于频繁;这是一项昂贵的操作。

关于ios - 奇怪的 CoreImage 裁剪问题在这里遇到,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46497340/

10-13 03:59