Ich lerne, wie benutzerdefinierte Core Image Filter schreiben, aber dieses Problem, wo die gerenderte Farbe ist nicht das gleiche wie im Kernel-Code angegeben, wenn der Farbwert zwischen 0 - 1 ist. (Farbe ist richtig, wenn gleich 0 oder 1)Benutzerdefinierte Core Image Filter Farbproblem
das ist mein Filtercode ist:
import UIKit
class testFilter: CIFilter
{
// simply return half red color (0.5)
var colorKernel = CIColorKernel(string:
"kernel vec4 theFilter()" +
"{ return vec4(0.5, 0.0, 0.0, 1.0); }"
)
override var outputImage: CIImage!
{
let rect = CGRect(x: 0, y: 0, width: 200, height: 100)
return colorKernel.applyWithExtent(rect,arguments: nil)
}
}
Verbrauch:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// generate image
let filter = testFilter()
let ciImage = f.outputImage
let image = UIImage(CIImage: ciImage)
// add to view
let v = UIImageView(frame: CGRect(x: 50, y: 50, width: 200, height: 100))
v.image = image
view.addSubview(v)
}
}
das Ausgangsbild wie diese, die tatsächliche Rotanteil Wert aussieht, ist arou nd 190 (Ich habe den Farbwert mit Photoshop überprüft). Für einen Wert von 0,5 dachte ich, der korrekte Ausgabewert wäre 255 * 0,5 = 122,5?