RGBA 値に基づいてカラー フィルターを作成する必要があります。Core Image または Metal Performance Shaders のどちらでも構いません。いくつかのデフォルト フィルタを提供するコア イメージ。しかし、RGBA カラー コードのフィルターが必要です。そのようなフィルタを作成することは可能ですか?
これを試してみましたが、期待した結果ではありません。色違いのセピアトーンフィルターのようなものを期待しています。(フィルターはフレーム全体に適用する必要があります)
@interface CustomFilterByColor : CIFilter
@property(nonatomic, retain) CIImage *inputImage;
@end
#import "CustomFilterByColor.h"
@implementation CustomFilterByColor
-(CIColorKernel*)kernel
{
static CIColorKernel *kernel = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
kernel = [CIColorKernel kernelWithString:
@"kernel vec4 CustomFilter1 ( __sample s ) \
\n { \n if ( s.r + s.g + s.b < 0.1 ) \n \
{ return s.rgba = vec4(1.0, 1.0, 0.0, 0.5); } \
\n else \n { return s.rgba; } \n }"];
});
return kernel;
}
-(CIImage*)outputImage
{
return [[self kernel] applyWithExtent:_inputImage.extent arguments:@[_inputImage]];
}
それは私のために働いています。このような結果画像を取得する
しかし、これは期待されるフィルターではありません。カラーフィルターだけを期待しています。お気に入り
あなたが私の主張を理解してくれることを願っています。