iOS CIFilter对图像进行滤镜处理 为何这么慢

我从一个页面跳过去 至少等了3秒 检查踩发现 因为那个页面正在对图像进行滤镜 有什么办法能提高速度

阅读 4.6k
2 个回答

GPUImage或许会快一点,以下是我用CIFilter测了一个滤镜处理,用了快2秒。

NSLog(@"start");
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *image = [CIImage imageWithContentsOfURL:[NSURL URLWithString:@"http://127.0.0.1:8000/top1.jpg"]];
CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];
[filter setValue:image forKey:kCIInputImageKey];
[filter setValue:@10.0f forKey: @"inputRadius"];
CIImage *result = [filter valueForKey:kCIOutputImageKey];
CGImageRef outImage = [context createCGImage: result fromRect:[result extent]];
UIImage * blurImage = [UIImage imageWithCGImage:outImage];

self.backgroundImageView.image=blurImage;

NSLog(@"end");


2015-09-09 16:18:22.703 test[7211:602636] start
2015-09-09 16:18:24.470 test[7211:602636] end

你可以用OpenGL的Context啊,你不传context默认是CPU的,对高斯模糊这种,CPU弱的时候就很慢了。
点开看OpenGL context

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题