我有一个具有UIGraphicsBeginImageWithContextWithOptions()
和UIGraphicsEndImageContext(
的函数,但该函数已经传递了一个名为" context"的CIContext。我希望重用这个上下文来提高性能,因为这个函数每秒被调用很多次,而不是每个函数调用都创建一个新函数。
let sourceCore = ciImage
let scaledSourceImage:UIImage = UIImage(ciImage:ciImage)
let size = scaledSourceImage.size.applying(CGAffineTransform(scaleX: 0.5, y: 0.5))
let hasAlpha = false
let scale: CGFloat = 1.0 // use scale factor of main screen
UIGraphicsBeginImageContextWithOptions(size, !hasAlpha, scale)
scaledSourceImage.draw(in: CGRect(origin: .zero, size: size))
let scaledImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
如何使用我通过函数传递的上下文从当前上下文中绘制并获取图像?默认情况下,上下文为零,我可以看到我可以使用context = CIContext(options: <#T##[String : Any]?#>)
初始化它,但我无法找到如何在任何地方编写这些选项。
有趣的是,我可以用传递的上下文创建一个CGImage,假设它context.createCGImage(image, from: image.extent)
为零!
编辑 - 这是Swift中的错误吗? '-[CIContext initWithOptions:]: unrecognized selector sent to instance
我确实希望选项传递大小和比例,但该线程会显示应该能够使用nil作为选项并在上下文中绘制而不会崩溃。
答案 0 :(得分:2)
你混淆了苹果和橘子。如果你有一个CIImage,你可以通过调用CIContext的createCGImage
或将它变成一个UIImage并将其绘制到图像图形上下文中来 。你没有两个。在使用第二种方法的代码中,没有CIContext的地方。