Gyp*_*psa 2 iphone image-processing objective-c uiimage swift
我想在我的图像上应用晕影和复古图像滤镜.
我按照这个示例代码.
我已经集成了黑白和sephia滤镜.此代码还提供了晕影图像滤镜,但它处理速度非常慢,并且应用程序在应用此滤镜时会因某些小图像而崩溃.
请建议我如何实现晕影和复古图像过滤器.任何建议将受到高度赞赏.提前致谢!
你可以使用GPUImage及其GPUImageSepiaFilter和GPUImageVignetteFilter 相当容易地做到这一点:
上面的图像是使用以下代码生成的:
UIImage *inputImage = [UIImage imageNamed:@"Lambeau.jpg"];
GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:inputImage];
GPUImageSepiaFilter *stillImageFilter = [[GPUImageSepiaFilter alloc] init];
GPUImageVignetteFilter *vignetteImageFilter = [[GPUImageVignetteFilter alloc] init];
vignetteImageFilter.vignetteEnd = 0.6;
vignetteImageFilter.vignetteStart = 0.4;
[stillImageSource addTarget:stillImageFilter];
[stillImageFilter addTarget:vignetteImageFilter];
[stillImageSource processImage];
UIImage *filteredImage = [vignetteImageFilter imageFromCurrentlyProcessedOutput];
Run Code Online (Sandbox Code Playgroud)
如果您希望将灰度滤镜应用于源图像,还有一个GPUImageGrayscaleFilter.
正如框架名称所示,这是所有GPU加速的,因此它比任何CPU绑定的图像处理例程快得多.实际上,您可以将上述过滤器应用于实时视频.对于640x480视频帧,iPhone 4可在~2 ms内运行此滤镜.由于往返于UIImages时需要通过Core Graphics的往返行程,静止图像会慢一点,但这仍然比CPU绑定过滤器快6倍.
目前实施的一个警告是,非A5设备(iPhone 3G S,iPhone 4,iPad 1)的纹理大小限制为2048x2048,因此我目前无法过滤大于此值的图像.我正在努力克服这个限制,但与此同时,您可能需要在处理之前缩小图像以适应此分辨率限制.