2015-02-04 2 views
0

Я заметил много людей, которые задавали вопросы о соединении фильтров с GPUImage. Я не могу понять, как это сделать лаконично. Наконец, сегодня он работает. Просто хотел поделиться своим кодом, чтобы люди могли ссылаться на решение.Как добавить несколько фильтров в UIImage GPUImage?

ответ

2
UIImage *faceImage = [UIImage imageNamed:@"469453586_640.jpg"]; 
UIImageView *face = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, faceImage.size.width/2.0, faceImage.size.height/2.0)]; 
[face setImage:faceImage]; 
[self.view addSubview:face]; 

GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:faceImage]; 

GPUImageBrightnessFilter *brightnessFilter = [[GPUImageBrightnessFilter alloc] init]; 
[brightnessFilter setBrightness:.15]; 
GPUImageGrayscaleFilter *grayscaleFilter = [[GPUImageGrayscaleFilter alloc] init]; 

GPUImagePosterizeFilter *posterizeFilter = [[GPUImagePosterizeFilter alloc] init]; 
[posterizeFilter setColorLevels:1]; 


[stillImageSource addTarget:brightnessFilter]; 
[brightnessFilter addTarget:grayscaleFilter]; 
[grayscaleFilter addTarget:posterizeFilter]; 

// these need to be changed if you change the order of your filters 
// [brightnessFilter useNextFrameForImageCapture]; 
// [grayscaleFilter useNextFrameForImageCapture]; 
[posterizeFilter useNextFrameForImageCapture]; 

[stillImageSource processImage]; 

[face setImage: [posterizeFilter imageFromCurrentFramebuffer]]; 
+0

Я бы не рекомендовал направлять это в UIImageView. Вместо этого используйте GPUImageView и настройте таргетинг. Преобразование в/из UIImage является дорогостоящим и потребляющим память, и переход непосредственно к GPUImageView позволяет избежать этого. –

+0

Я использовал GPUImageView, и он отобразил центр изображения и с черным фоном. Теперь, когда вы изобрели то, что я вам доверяю, но как разработчик продукта UIImageView - это то, что я знаю, и он получает результаты, которые я хочу, чтобы изображение было установлено в определенный мной фрейм. Итак, если вы хотите, чтобы люди делали это, сделайте это так просто. Было очень сложно заставить это работать, и люди всегда будут стремиться к самому быстрому пути к желаемому результату. – chrisallick

+0

Кроме того, я предлагаю перейти к каждому сообщению, где люди спрашивают, как сделать то, что я только что сделал, и исправить их, а не сбить решение. – chrisallick

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