применяется фильтр основных изображений - PullRequest
2 голосов
/ 22 марта 2012

как я применяю фильтр CIToneCurve, который я применил

  filter= [CIFilter filterWithName:@"CIScreenBlendMode"];
     [filter setValue:beginImage1 forKey:kCIInputImageKey];
     [filter setValue:beginImage forKey:@"inputBackgroundImage"];

различные фильтры с этим подходом теперь я хочу применить CIToneCurve, как я должен применять это с этими параметрами

inputImageКласс CIImage, отображаемое имя которого - Image.

inputPoint0 Класс CIVector, тип атрибута которого - CIAttributeTypeOffset и отображаемое имя которого - Точка 1. Значение по умолчанию: [0, 0] Удостоверение: [0, 0]

inputPoint1 Класс CIVector, тип атрибута которого CIAttributeTypeOffset и отображаемое имя которого Point 2l.Значение по умолчанию: [0,25, 0,25] Удостоверение: [0,25, 0,25]

inputPoint2 Класс CIVector, тип атрибута которого - CIAttributeTypeOffset и отображаемое имя которого - Точка 3l.Значение по умолчанию: [0,5, 0,5] Удостоверение: [0,5, 0,5]

inputPoint3 Класс CIVector, тип атрибута которого - CIAttributeTypeOffset и отображаемое имя которого - Точка 4. Значение по умолчанию: [0.75, 0.75] Удостоверение:[0.75, 0.75]

inputPoint4 Класс CIVector, тип атрибута которого CIAttributeTypeOffset и отображаемое имя которого - Точка 5. Значение по умолчанию: [1, 1] Удостоверение: [1, 1]

я пишу это, но мое приложение вылетает без каких-либо ошибок

1 Ответ

8 голосов
/ 24 марта 2012

каждый фильтр принимает различные виды параметров, но как только вы их получите, это довольно просто.Вы не опубликовали, какую ошибку вы получаете, но это работает для меня:

- (void)doCIToneCurveFilter
{
    // Set an appropriate image. A bit dark so we see the results clearer
    // This image is being taken from http://photo.tutsplus.com/tutorials/post-processing/adobe-camera-raw-for-beginners-tone-curve/
    imageView.image = [UIImage imageNamed:@"turtles"];
    imageView.frame = CGRectMake(0, 0, imageView.image.size.width*0.7, imageView.image.size.height*0.7); // shrank this a bit 2 images fit on screen

    // Make the input image recipe
    CIImage *inputImage = [CIImage imageWithCGImage:imageView.image.CGImage];

    // Make tone filter filter
    // See mentioned link for visual reference
    CIFilter *toneCurveFilter = [CIFilter filterWithName:@"CIToneCurve"];
    [toneCurveFilter setDefaults];
    [toneCurveFilter setValue:inputImage forKey:kCIInputImageKey];
    [toneCurveFilter setValue:[CIVector vectorWithX:0.0  Y:0.0] forKey:@"inputPoint0"]; // default
    [toneCurveFilter setValue:[CIVector vectorWithX:0.27 Y:0.26] forKey:@"inputPoint1"]; 
    [toneCurveFilter setValue:[CIVector vectorWithX:0.5  Y:0.80] forKey:@"inputPoint2"];
    [toneCurveFilter setValue:[CIVector vectorWithX:0.7  Y:1.0] forKey:@"inputPoint3"];
    [toneCurveFilter setValue:[CIVector vectorWithX:1.0  Y:1.0] forKey:@"inputPoint4"]; // default

    // Get the output image recipe
    CIImage *outputImage = [toneCurveFilter outputImage];

    // 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]];

    // Draw the image in screen
    UIImageView *imageView2 = [[UIImageView alloc] initWithImage:[UIImage imageWithCGImage:cgimg]];
    CGRect f = imageView2.frame;
    f.origin.y = CGRectGetMaxY(imageView.frame);
    f.size.width = imageView.frame.size.width;
    f.size.height = imageView.frame.size.height;
    imageView2.frame = f;

    [self.view addSubview:imageView2];
}

И вот результат:

Result CIToneCurve

Изображение, которое я использовалбыло взято из здесь и там вы можете найти кривую, которую я аппроксимировал в этом примере:

curve

PS: Если вам интересно, почему мое изображение результата делаетне выглядит точно так же, как результат в ссылка , это потому, что мое изображение является частичным изображением, а распределение цвета отличается.Похоже, но не точно так же.Таким образом, применение точно такой же кривой не даст точно такой же результат.

Надеюсь, это поможет

...