gpt4 book ai didi

ios - 为照片添加多种效果

转载 作者:可可西里 更新时间:2023-11-01 00:35:45 46 4
gpt4 key购买 nike

如何为一张图片添加多种效果?我有以下代码可以为照片添加效果:

func applyEffects(name: String, n: Float) {
filter.setValue(self.cImage, forKeyPath: kCIInputImageKey)
filter.setValue(n, forKeyPath: name)

let result = filter.value(forKey: kCIOutputImageKey) as! CIImage
let cgImage = CIContext.init(options: nil).createCGImage(result, from: result.extent)

self.customImage = UIImage.init(cgImage: cgImage!)
}

func brightness(n: Float) {
self.applyEffects(name: kCIInputBrightnessKey, n: n)
}

func contrast(n: Float) {
self.applyEffects(name: kCIInputContrastKey, n: n)
}

func saturation(n: Float) {
self.applyEffects(name: kCIInputSaturationKey, n: n)
}

但是当我想应用第二个效果时,第一个消失了。如何将两个或多个效果相互叠加?

最佳答案

我假设您使用 CIColorControls 作为过滤器。

您需要将所有三个值传递到您的调用中:

// The documentation doesn't give a default value for contrast, but for the others, I'm setting the defaults

var brightness:Float = 1
var contrast:Float = 1
var saturation:Float = 1


func applyEffects() {

filter.setValue(self.cImage, forKeyPath: kCIInputImageKey)
filter.setValue(brightness, forKeyPath: kCIInputBrightnessKey)
filter.setValue(contrast, forKeyPath: kCIInputContrastKey)
filter.setValue(saturation, forKeyPath: kCIInputSaturationKey)

let result = filter.value(forKey: kCIOutputImageKey) as! CIImage
let cgImage = CIContext.init(options: nil).createCGImage(result, from: result.extent)

self.customImage = UIImage.init(cgImage: cgImage!)

}

func brightness(n: Float) {
brightness = n
applyEffects()
}

func contrast(n: Float) {
contrast = n
applyEffects()
}

func saturation(n: Float) {
saturation = n
applyEffects()
}

一个建议:

如果您尝试通过 UISliders 使用“实时”更新,请使用 GLKView 并直接发送 CIImage。它使用 GPU,大大提高了设备​​的性能。您始终可以创建一个 UIImage 用于保存、消息传递等。

关于ios - 为照片添加多种效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43323834/

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