我正在尝试对复制我的 Photoshop 模型的 UIImage 进行高斯模糊。
期望行为: 在 Photoshop 中,当我运行高斯模糊滤镜时,由于边缘模糊,图像层变得更大。
观察到的行为:使用 GPUImage,我可以成功地模糊我的 UIImages。但是,新图像在原始边界处被裁剪,一直留下硬边。
设置UIImageView.layer.masksToBounds = NO;
没有帮助,因为图像被裁剪而不是视图。
我还尝试在模糊之前将 UIImage 放在较大的清晰图像上,然后调整大小。这也没有帮助。
有没有办法实现这种“Photoshop 风格”的模糊?
感谢 Brad Larson更新工作解决方案:
UIImage sourceImage = ...
GPUImagePicture *imageSource = [[GPUImagePicture alloc] initWithImage:sourceImage];
GPUImageTransformFilter *transformFilter = [GPUImageTransformFilter new];
GPUImageFastBlurFilter *blurFilter = [GPUImageFastBlurFilter new];
//Force processing at scale factor 1.4 and affine scale with scale factor 1 / 1.4 = 0.7
[transformFilter forceProcessingAtSize:CGSizeMake(SOURCE_WIDTH * 1.4, SOURCE_WIDTH * 1.4)];
[transformFilter setAffineTransform:CGAffineTransformMakeScale(0.7, 0.7)];
//Setup desired blur filter
[blurFilter setBlurSize:3.0f];
[blurFilter setBlurPasses:20];
//Chain Image->Transform->Blur->Output
[imageSource addTarget:transformFilter];
[transformFilter addTarget:blurFilter];
[imageSource processImage];
UIImage *blurredImage = [blurFilter imageFromCurrentlyProcessedOutputWithOrientation:UIImageOrientationUp];