应用过滤器Swift时CIImage发生内存泄漏

时间:2018-09-05 16:02:53

标签: swift

我创建了一个用于处理图像的应用程序,但是在添加过滤器时遇到了问题 由于内存问题,尝试为多张图片和应用添加过滤器的操作已崩溃。

func apply(_ filter: BanyanFilter, toImage: UIImage, adjustments: [String: Float]) -> UIImage? {

    if toImage != image {
        inputImage = CIImage(image: toImage)
    }
    print("Applying Filter: " + filter.name)
    filter.adjustments = adjustments

    filter.brightness = adjustments["brightness"]!
    filter.contrast = adjustments["contrast"]!
    filter.exposure = adjustments["exposure"]!
    filter.sharpness = adjustments["sharpness"]!
    filter.temperature = adjustments["temperature"]!
    filter.targetNeutral = adjustments["targetNeutral"]!

    filter.inputImage = inputImage

    let cgImage = context.createCGImage(filter.outputImage!, from: filter.outputImage!.extent)!
    let finalFilterImage = UIImage(cgImage: cgImage, scale: toImage.scale, orientation: toImage.imageOrientation)

    let finalImage = applyAdjustments(filter: filter, toImage: finalFilterImage)

    if filter.brightness == 0.0 { filter.brightness = filter.brightnessFilterDefault}
    if filter.contrast == 1.0 { filter.contrast = filter.contrastFilterDefault}
    if filter.exposure == 0.0 { filter.exposure = filter.exposureFilterDefault}
    if filter.sharpness == 0.0 { filter.sharpness = filter.sharpnessFilterDefault}
    if filter.temperature == 6500.0 { filter.temperature = filter.temperatureFilterDefault}
    if filter.targetNeutral == 6500.0 { filter.targetNeutral = filter.targetNeutralFilterDefault}

    return finalImage
}

0 个答案:

没有答案