大佬教程收集整理的这篇文章主要介绍了ios – 在界限之外模糊UIImage(Photoshop风格),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
期望的行为:
在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];
为此,您需要将图像提供给GPUImageTransformFilter,然后使用-forceProcessingAtSize:或-forceProcessingAtSizeRespecTingAspectRatio:来扩大工作区域.但是,这也会默认放大图像,因此要对此进行处理,请使用GPUImageTransformFilter进行缩放变换,以减小图像相对于较大区域的大小.这将使其保持相同的像素尺寸,同时将其放置在更大的整体图像中.
然后,您需要做的就是将此输出提供给模糊滤镜,模糊现在将延伸到原始图像的边缘.强制图像的大小取决于模糊需要延伸到原始图像边缘的距离.
以上是大佬教程为你收集整理的ios – 在界限之外模糊UIImage(Photoshop风格)全部内容,希望文章能够帮你解决ios – 在界限之外模糊UIImage(Photoshop风格)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。