J'apprends comment écrire des filtres d'image de base personnalisés, mais j'ai ce problème lorsque la couleur de rendu n'est pas la même que celle spécifiée dans le code noyau lorsque la valeur de couleur est comprise entre 0 et correct lorsque égal à 0 ou 1.)Problème de couleur du filtre d'image de base personnalisé
Ceci est mon code de filtre:
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)
}
}
Utilisation:
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)
}
}
l'image de sortie ressemble à ceci, la valeur de la composante réelle rouge est Arou sd 190 (J'ai vérifié la valeur de couleur en utilisant Photoshop). Pour une valeur de 0,5 j'ai pensé que la valeur de sortie correcte serait 255 * 0.5 = 122.5?