我正在阅读有关Core Image
的文章,其中看到以下几行:
if let output = filter?.valueForKey(kCIOutputImageKey) as? CIImage {
let cgimgresult = context.createCGImage(output, fromRect: output.extent)
let result = UIImage(CGImage: cgimgresult)
imageView?.image = result
}
如您所见,CIImage
实例首先转换为CGImage
实例,然后才转换为UIImage
实例。经过一些研究,我发现它与图像视图范围内的图像比例有关。
我想知道的是,为什么我们需要进行所有这些转换的唯一原因(具有合适的显示比例)是因为UIImage
已有一个带有CIImage
实例的初始化程序作为论点?
答案 0 :(得分:0)
在撰写的UIImage's reference中
初始化的UIImage对象。在Objective-C中,如果ciImage参数为nil,则此方法返回nil。
就像@matt写道here
仅当UIImage已经由CIImage支持(例如,因为它是由
imageWithCIImage:
生成)时,UIImage的CIImage才不是nil。
因此,直接初始化
UIImage(ciImage: ciImage)
可以是nil
。
这就是为什么我们应该通过CGImage
而不是CIImage
来初始化UIImage