Через месяц ...
Это пример CIColorMatrix
установки всех его параметров:)
-(void)doCIColorMatrixFilter
{
// Make the input image recipe
CIImage *inputImage = [CIImage imageWithCGImage:[UIImage imageNamed:@"facedetectionpic.jpg"].CGImage]; // 1
// Make the filter
CIFilter *colorMatrixFilter = [CIFilter filterWithName:@"CIColorMatrix"]; // 2
[colorMatrixFilter setDefaults]; // 3
[colorMatrixFilter setValue:inputImage forKey:kCIInputImageKey]; // 4
[colorMatrixFilter setValue:[CIVector vectorWithX:1 Y:1 Z:1 W:0] forKey:@"inputRVector"]; // 5
[colorMatrixFilter setValue:[CIVector vectorWithX:0 Y:1 Z:0 W:0] forKey:@"inputGVector"]; // 6
[colorMatrixFilter setValue:[CIVector vectorWithX:0 Y:0 Z:1 W:0] forKey:@"inputBVector"]; // 7
[colorMatrixFilter setValue:[CIVector vectorWithX:0 Y:0 Z:0 W:1] forKey:@"inputAVector"]; // 8
// Get the output image recipe
CIImage *outputImage = [colorMatrixFilter outputImage]; // 9
// Create the context and instruct CoreImage to draw the output image recipe into a CGImage
CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]]; // 10
// Draw the image in screen
UIImageView *imageView2 = [[UIImageView alloc] initWithImage:[UIImage imageWithCGImage:cgimg]];
CGRect f = imageView2.frame;
f.origin.y = CGRectGetMaxY(imageView.frame);
imageView2.frame = f;
[self.view addSubview:imageView2];
}
Вот что делает образец:
В 1
мы создаем ciimage, если вы получаете ноль, то убедитесь, что вы передаете правильный UIImage / CGImage или путь.
В 2
создайте фильтр, вы знаете это :)
В 3
установите параметры фильтра на значения по умолчанию, руководство по программированию CoreImage предлагает сделать это, хотя (я не экспериментировал со странными / плохими вещами, если их избегать).
В 4
установить входной сигнал
От 5
до 8
мы устанавливаем параметры.Например, я сделал красный вектор {1,1,1,0}, чтобы изображение выглядело красноватым .6
, 7
и 8
и здесь не обязательны, поскольку их значения совпадают со значениями по умолчанию (помните, мы назвали -setDefaults
?), Но для образовательных целей я думаю, что они хороши:)
В 9
установите выходное изображение, хотя оно еще не нарисовано.
Наконец, в 10
вы указываете CoreImage рисовать выходное изображение в CGImage, и мы помещаем этот CGImage в UIImage, и он внутриUIImageView.
Это результат (я использовал то же изображение, что и этот учебник):
![Reddish](https://i.stack.imgur.com/qJya9.png)
Надеюсь, это поможет.