カスタムCIFilterを作成しようとしています。これまでのところ、このフィルターはイメージを明るくしています。私が実際に望むものではありませんが、私はそれを動作させることができるかどうかを確認するためにそれをやっています。フィルターはinputBlurRadiusの設定値で動作しますが、ユーザーが値を変更できるようにフィルターを変更する方法はわかりません。ここにカスタムフィルタがあります。私はそれを使用するファイルでカスタムCIFilterの入力キーを変更するにはどうすればよいですか?
import Foundation
import UIKit
public class CustomFilter: CIFilter {
var inputImage: CIImage?
private var kernel: CIColorKernel!
var inputBrightness: CGFloat = 0.4
override public var outputImage: CIImage!
{
guard let inputImage = inputImage
else
{
return nil
}
let extent = inputImage.extent
let blur = createCustomKernel4().apply(
withExtent: inputImage.extent,
roiCallback:
{
(index, rect) in
return rect
},
arguments: [inputImage, inputBrightness as AnyObject])
return blur!.cropping(to: extent)
}
func createCustomKernel4() -> CIColorKernel {
let kernelString =
"kernel vec4 brightenEffect (sampler src , float k) { \n " +
" vec4 currentSource = sample (src, samplerCoord (src));" +
"currentSource.rgb = currentSource.rgb + k * currentSource.a;" +
"return currentSource; \n " +
"}"
return CIColorKernel(string: kernelString)!
//brigtens an image
}
}
class CustomFiltersVendor: NSObject, CIFilterConstructor
{
static func registerFilters()
{
CIFilter.registerName(
"CustomFilter",
constructor: CustomFiltersVendor(),
classAttributes: [
kCIAttributeFilterCategories: ["CustomFilters"]
])
}
func filter(withName name: String) -> CIFilter?
{
switch name
{
case "CustomFilter":
return CustomFilter()
default:
return nil
}
}
}
、私は
let filter3 = CustomFilter()
filter3.setValue(coreImage, forKey: kCIInputImageKey)
filter3.inputKeys
let outputImage = filter3.outputImage!
を持っている私はinputKeysでinputBrightnessを参照してください、私はそれを修正する方法が分かりませんか?どうすればいい?
私はそれを稼働させましたが、解決策を書くことに感謝します! – Jade