1
私はカスタムコアイメージフィルタの書き方を学んでいますが、カラー値が0〜1のときにレンダリングされた色がカーネルコードで指定されたものと同じでないというこの問題があります。 )0に等しいまたは1正しいカスタムコアイメージフィルタカラーの問題
これは私のフィルタコードである:
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)
}
}
使用:
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)
}
}
出力画像はこのようになり、実際の赤成分値がarouありますnd 190(私はPhotoshopを使って色の値をチェックしました)。値が0.5の場合、正しい出力値は255 * 0.5 = 122.5となるでしょうか?カーネルがsRGBカーブに基づいて色を作成されていて、線形値に基づいて色を期待しているので、私はこのことを考えている