2013-10-24 7 views
2

Ниже приведен код, который я пытаюсь применить, чтобы получить фильтр CIFourfoldRotatedTile на изображении, но я получаю нулевое изображение на выходе.CIFourfoldRotatedTile Core Image Filter

CIContext *context = [CIContext contextWithOptions:nil];    // 1 
CIImage *aimage = [CIImage imageWithCGImage:[UIImage imageNamed:@"Image1.png"].CGImage]; 
CIFilter *filter = [CIFilter filterWithName:@"CIFourfoldRotatedTile"];   // 3 
[filter setValue:aimage forKey:kCIInputImageKey]; 
[filter setValue:[CIVector vectorWithCGPoint:CGPointMake(200, 200)] forKey:@"inputCenter"]; 
[filter setValue:[NSNumber numberWithFloat:2.0] forKey:@"inputAngle"]; 
[filter setValue:[NSNumber numberWithFloat:50] forKey:@"inputWidth"]; 

CIImage *result = [filter valueForKey:kCIOutputImageKey];    // 4 
CGRect extent = [result extent]; 
CGImageRef cgImage = [context createCGImage:result fromRect:extent]; 
UIImage *finalImage = [UIImage imageWithCGImage:cgImage]; 
self.imgview.image = finalImage; 

Не знаю, какой параметр я вхожу неправильно. Пожалуйста, помогите мне в этом. Спасибо.

ответ

1

Я только что проверил ваш код и обнаружил, что extent бесконечно здесь, то есть вы получаете изображение nil. Я только что сделал небольшое изменение здесь, дают степень фоторамке

CGRect extent = CGRectMake(0.0, 0.0, image.size.width, image.size.height); 

ИЛИ

CGRect extent = [aimage extent]; 

, а затем попробовать.

+0

экстент содержит размер выходного изображения, так что мое выходное изображение не создается должным образом с использованием фильтра – Leena

+0

Я думаю, что я прав. Вы должны использовать '[aimage extent]' вместо '[result extent]' – TheTiger

+0

На самом деле я также пробовал 'CIGaussianBlur' и' [result extent] 'не подходит, даже вы можете проверить его со значениями по умолчанию. Не заполняйте ничего, просто попробуйте значения по умолчанию, а затем посмотрите. – TheTiger

Смежные вопросы