swift - 在 Swift 中重写 CIImage 最终会导致处理器下降到 0% 并卡住

标签 swift cpu-usage freeze blend ciimage

我想将 CIImage 混合到我最后一个 CIImage 中。当我多次重复此操作时,输出图像最终卡住,并且我看到 CPU 下降到 0%。我不确定是否是因为它是不可变的,但我重新定义其他 CIImage 没有问题,所以我不确定这是否是问题所在。

我正在重写的 CIImage 是全局的,但我已经尝试了所有不同的范围。这也是可选的

var retainedCI:CIImage? = nil

我的功能

func createRetainedCI(ciImage:CIImage,
                      retainedCI:CIImage) -> CIImage {

    let colorMatrix = CIFilter(name: "CIColorMatrix")
    colorMatrix?.setDefaults()

    colorMatrix?.setValue(retainedCI, forKey: kCIInputImageKey)
    colorMatrix?.setValue(CIVector(x: 0, y: 0, z: 0, w: debugAlpha), forKey: "inputAVector")

    var dupeCI = colorMatrix?.outputImage

    dupeCI = dupeCI?.applyingFilter("CISourceOverCompositing", parameters: [kCIInputImageKey: dupeCI!,
                                                                                kCIInputBackgroundImageKey: ciImage])

    return dupeCI!

}

我怎么调用它

if retainedCI == nil { retainedCI = ciImage }

retainedCI = hueCycleFilters.createRetainedCI(ciImage: ciImage, retainedCI: retainedCI!)

最佳答案

尝试使用此功能

func createRetainedCI(ciImage:CIImage,
                      retainedCI:CIImage) -> CIImage {

    let colorMatrix = CIFilter(name: "CIColorMatrix")
    colorMatrix?.setDefaults()

    colorMatrix?.setValue(retainedCI, forKey: kCIInputImageKey)
    colorMatrix?.setValue(CIVector(x: 0, y: 0, z: 0, w: debugAlpha), forKey: "inputAVector")

    var dupeCI = colorMatrix?.outputImage

    colorMatrix = nil

    dupeCI = dupeCI?.applyingFilter("CISourceOverCompositing", parameters: [kCIInputImageKey: dupeCI!,
                                                                                kCIInputBackgroundImageKey: ciImage])

    return dupeCI!

}

关于swift - 在 Swift 中重写 CIImage 最终会导致处理器下降到 0% 并卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50993230/

相关文章:

ios - 第二个 View Controller 场景中的 Swift viewDidLoad() 不工作

sorting - Swift 返回将对数组进行排序的索引(类似于 numpy argsort)

javascript - 以百分比获取进程 CPU 使用率

C# Windows 窗体应用程序函数循环

swift - 如何使用在不同约束之间进行插值的自动布局执行交互式动画?

Swift - 无法找出 AudioKit 中的简单 "Mic->Effect->File"链

database - 什么是快速执行和低 CPU - 从表中的数据库(存储为二进制)读取非规范化数据或从二进制文件读取相同数据?

sql - Postgres 进程的高 CPU 使用率

Java SQL Server 应用程序卡在 statements.executeUpdate() 上

c++ - 内存转储分析(应用挂起)