Месяц спустя ...
Это пример установки 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, если вы получаете там nil, убедитесь, что вы передаете правильный UIImage/CGImage или путь.
В 2
создайте фильтр, вы это знаете :)
В 3
установите параметры фильтра по умолчанию, руководство по программированию CoreImage предлагает нам сделать это, хотя (я не экспериментировал с какими-либо странными/плохими вещами, если их избегать.)
В 4
установите входной ciimage
С 5
по 8
устанавливаем параметры. Например, я создал красный вектор {1,1,1,0}, чтобы изображение выглядело красноватым. 6
, 7
и 8
и здесь не нужны, так как их значения такие же, как и по умолчанию (помните, мы назвали -setDefaults
?), но для образовательных целей, я думаю, они подходят :)
В 9
задайте выходное изображение, хотя оно еще не нарисовано.
Наконец, в 10
вы указываете CoreImage отрисовывать выходное изображение в CGImage, и мы помещаем этот CGImage в UIImage и внутри UIImageView.
Вот результат (я использовал то же изображение, что и этот учебник):
![Красноватый](https://i.stack.imgur.com/qJya9.png)
Надеюсь, поможет.
person
nacho4d
schedule
24.03.2012