iOS - не удается обработать изображение с помощью CIFilter - PullRequest
5 голосов
/ 15 декабря 2011

Я пытаюсь обработать изображение с помощью Core Image. Для этого я создал категорию UIImage.

Я добавил QuartzCore и CoreImage платформы для проецирования, импортировал CoreImage / CoreImage.h и использовал этот код:

CIImage *inputImage = self.CIImage;
CIFilter *exposureAdjustmentFilter = [CIFilter filterWithName:@"CIExposureAdjust"];
[exposureAdjustmentFilter setDefaults];
[exposureAdjustmentFilter setValue:inputImage forKey:@"inputImage"];
[exposureAdjustmentFilter setValue:[NSNumber numberWithFloat:5.0f] forKey:@"inputEV"];
CIImage *outputImage = [exposureAdjustmentFilter valueForKey:@"outputImage"];
CIContext *myContext = [CIContext contextWithOptions:nil];

return [UIImage imageWithCGImage:[myContext createCGImage:outputImage fromRect:outputImage.extent]];

Но я получил ноль выходное изображение из фильтра.

Я также пытался использовать CIHueAdjust с тем же результатом.

Заранее

ОБНОВЛЕНИЕ : Я нашел решение. Необходимо было выделить новый CIImage , а не только передать ссылку на UIImage.CIImage таким образом:

CIImage *inputImage = [[CIImage alloc] initWithImage:self];

1 Ответ

5 голосов
/ 15 декабря 2011

Попробуйте следующий код: -

 CIImage *inputImage = [[CIImage alloc] initWithImage:[UIImage imageNamed:@"old-country-rain.jpg"]];
CIFilter * controlsFilter = [CIFilter filterWithName:@"CIExposureAdjust"];
[controlsFilter setValue:inputImage forKey:kCIInputImageKey];
[controlsFilter setValue:[NSNumber numberWithFloat: 2.0f] forKey:@"inputEV"];
NSLog(@"%@",controlsFilter.attributes);
CIImage *displayImage = controlsFilter.outputImage;
UIImage *finalImage = [UIImage imageWithCIImage:displayImage];

CIContext *context = [CIContext contextWithOptions:nil];
if (displayImage == nil || finalImage == nil) {
    // We did not get output image. Let's display the original image itself.
    imageView.image = [UIImage imageNamed:@"old-country-rain.jpg"];
}else {
    // We got output image. Display it.
    imageView.image = [UIImage imageWithCGImage:[context createCGImage:displayImage fromRect:displayImage.extent]];
}
...