2015-01-23 3 views
1

Я использую GPUImageStillCamera, чтобы сфотографировать и загрузить изображение в GPUImageViewGPUImage применить фильтр к GPUImageView

Теперь, как я могу применить фильтр к неподвижному GPUImageView?

Единственные примеры, которые я вижу в Интернете, - это сначала создать GPUImagePicture (для чего требуется UIImage), но кажется довольно расточительным создание UIImage из GPUImageView, а затем загрузить его в GPUImagePicture, когда я могу просто применить фильтры к GPUImageView напрямую. Но я не знаю, как

Я пробовал:

GPUImageFilter *sepiaFilter [[GPUImageSepiaFilter alloc]init]; 
    [sepiaFilter addTarget:gpuImageView]; 

    //and then tried these in a bunch of different orders 
    [filter useNextFrameForImageCapture]; 
    [currentFilter endProcessing]; 
    [currentFilter imageFromCurrentFramebuffer]; 

EDIT: Вот как я загрузить изображение в GPUImageView

self.stillCamera = [[GPUImageStillCamera alloc] 
         initWithSessionPreset:AVCaptureSessionPresetPhoto 
         cameraPosition:AVCaptureDevicePositionFront]; 
self.stillCamera.outputImageOrientation = UIInterfaceOrientationPortrait; 
self.filterEmpty = [[GPUImageGammaFilter alloc] init]; 

[self.stillCamera addTarget:self.filterEmpty]; 


[self.filterEmpty addTarget:self.capturedImageView]; 
[self.stillCamera startCameraCapture]; 


[self.stillCamera capturePhotoAsJPEGProcessedUpToFilter:self.filterEmpty withCompletionHandler:^(NSData *processedJPEG, NSError *error){ 

[self.stillCamera stopCameraCapture]; 

//and then from here the gpuimageview is loaded with the taken picture 
+0

Как вы делаете снимок и загружаете его в GPUImageView? – Jack

+0

@JackWu Я обновил свой вопрос – MobileMon

ответ

0

Есть регулярный вид изображения сверху GPUImageView.

Назовем это UIImageVIew imageView.

[self.stillCamera capturePhotoAsImageProcessedUpToFilter:self.filterEmpty 
    withCompletionHandler:^(UIImage *processedImage, NSError *error) { 
     imageView.image = processedImage; 
     //stop, dispose of, or just continue with the camera, 
     //depending on what you want with your app. 
}]; 

По крайней мере, это то, как я делаю это на фильтровальной приложение в режиме реального времени фотографии, и она прекрасно работает.

+0

Пользователь может применять различные фильтры в быстрой последовательности (так же, как и instagram), поэтому я не хочу, чтобы преобразовать GPUImageView в UIImage, потому что он очень тяжелый в памяти и приводит к сбою приложения – MobileMon

+0

@ MobileMon да, я признаю, что память иногда является проблемой. Как насчет этого примера из собственных примеров GPUImage: https://github.com/BradLarson/GPUImage/blob/master/examples/iOS/SimpleImageFilter/SimpleImageFilter/SimpleImageViewController.m Я думаю, что это может помочь вам быстро добиться применения эффектов. –

+0

Все они требуют сначала UIImage для sourcePicture. Есть ли способ установить GPUImageView в качестве источника для sourcePicture? – MobileMon

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