2014-02-12 80 views
0

我一直在使用GPUImageGaussianSelectiveBlurFilterGPUImageGaussianSelectiveBlurFilter选择区域问题

imagePic = [[GPUImagePicture alloc] initWithImage:captureImage];// given a input in gpuimagepicture for process a image 
filter = [[GPUImageGaussianSelectiveBlurFilter alloc] init]; 
[imagePic addTarget:filter];// add a filter for image 

// create a view for set a image in that view 
imageViewGpu=[[GPUImageView alloc] initWithFrame:CGRectMake((self.view.frame.size.width-OutputImageView.frame.size.width)/2.0, (biManager.displayImageHeight-OutputImageView.frame.size.height)/2.0, OutputImageView.frame.size.width, OutputImageView.frame.size.height)]; 
imageViewGpu.userInteractionEnabled = YES; 

imageViewGpu.frame=OutputImageView.frame; 
imageViewGpu.multipleTouchEnabled= YES; 
imageViewGpu.backgroundColor = [UIColor clearColor]; 
imageViewGpu.userInteractionEnabled = YES; 
imageViewGpu.fillMode=kGPUImageFillModePreserveAspectRatio; 
[self.view addSubview:imageViewGpu]; 
[(GPUImageGaussianSelectiveBlurFilter *) filter setExcludeCircleRadius:0.3f]; 

[(GPUImageGaussianSelectiveBlurFilter *) filter setExcludeCirclePoint:CGPointMake(0,0)]; 
[filter addTarget:imageViewGpu]; 
[filter prepareForImageCapture]; 
[imagePic processImage];// get a filter apply image 

我的输出

enter image description here

但我需要这个输出

enter image description here

我觉得这过滤器很大程度上处理方形图像,但它不正确使用矩形image.Please帮助我。

回答

0
if (imageViewGpu.frame.size.height>imageViewGpu.frame.size.width) { 

     [(GPUImageGaussianSelectiveBlurFilter *) filter setAspectRatio:imageViewGpu.frame.size.height/imageViewGpu.frame.size.width]; 
} 
else 
{ 

    [(GPUImageGaussianSelectiveBlurFilter *) filter setAspectRatio:imageViewGpu.frame.size.width/imageViewGpu.frame.size.height]; 

} 

上面的代码是运作良好

0

将您的图像绘制成高度相同但宽度相同的方形缓冲区。模糊它。将其复制回到较小的矩形缓冲区中。

+0

你好,先生,我不明白这个答案。请帮帮我 – ram

1

将滤镜的aspectRatio属性设置为图像的宽高比。

filter.aspectRatio = imagePix.size.width/imagePix.size.height 

如果不行交换宽度/高度:]