Я хочу смешать изображение с синим цветом, используя фильтр CIScreenBlendMode.
Для этого я использую следующий код:
-(CIImage*)makeitBlue:(CIImage*)greyImage{
CIImage* outputImage = nil;
//create some blue
CIFilter* blueGenerator = [CIFilter filterWithName:@"CIConstantColorGenerator"];
CIColor* blue = [CIColor colorWithString:@"0.1 0.5 0.8 1.0"];
[blueGenerator setValue:blue forKey:@"inputColor"];
CIImage* blueImage = [blueGenerator valueForKey:@"outputImage"];
//apply a screen filter
CIFilter* filter = [CIFilter filterWithName:@"CIScreenBlendMode"];
[filter setValue:blueImage forKey:@"inputImage"];
[filter setValue:greyImage forKey:@"inputBackgroundImage"];
outputImage = [filter valueForKey:@"outputImage"];
return outputImage;
}
Этот метод приводит к сбою моего приложения, и я не знаю, почему.
В своей документации Apple указывает следующие параметры для CIScreenBlendMode:
входное изображение | Объект CIImage с отображаемым именем Image.
входное фоновое изображение | Объект CIImage, отображаемое имя которого — Background Image.
Я думаю, это именно то, что я предоставляю.
Когда я заменяю CIScreenBlendMode на CIMultiplyCompositing, этот код работает нормально.
Может быть, кто-то из вас заметит мою ошибку?