gpt4 book ai didi

swift - 使用通过函数传递的 CIContext 而不是 UIGraphicsBeginImageContextWithOptions

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

我有一个函数 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()

如何使用我通过函数传递的上下文从当前上下文绘制和获取图像?默认情况下,上下文为 nil,我可以看到我可以用 context = CIContext(options: <#T##[String : Any]?#>) 初始化它,但我找不到如何在任何地方编写这些选项。

有趣的是,我可以用传递的上下文创建一个 CGImage,它应该是 nil context.createCGImage(image, from: image.extent) !

编辑 - 它是 Swift 中的错误吗? '-[CIContext initWithOptions:]: unrecognized selector sent to instance

我确实希望选项能够传递大小和比例,但是该线程显示您应该能够将 nil 用于选项并在上下文中绘制而不会崩溃。

最佳答案

你混淆了苹果和橘子。如果您有一个 CIImage,您可以通过调用 CIContext 的 createCGImage 将其转换为 UIImage 并将其绘制为图像图形来渲染它或者语境。你不会两者。在您使用第二种方法的代码中,CIContext 没有位置。

关于swift - 使用通过函数传递的 CIContext 而不是 UIGraphicsBeginImageContextWithOptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50842040/

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