IOS:在不剪裁模糊的情况下向 UIImage 添加模糊

标签 ios objective-c gpuimage

是否可以在不裁剪到 View 边缘的情况下生成模糊图像?正如您在下图中看到的,右侧没有被剪裁(因为框架延伸到模糊之外),但左侧被剪裁了。

提前致谢

enter image description here

    GPUImageMotionBlurFilter *blurFilter = [GPUImageMotionBlurFilter new];
    blurFilter.blurSize = 10;
    blurredImage = [blurFilter imageByFilteringImage:blurredImage];

最佳答案

图像处理操作只能扩展到图像的大小,因此您需要做的是调整操作所用 Canvas 的大小。

使用 GPUImage,首先想到的方法是使用 -forceProcessingAtSize: 增加图像的分辨率,然后使用逆变换将您的图像以其原始分辨率放置在那。例如,如果您将原始图像的大小加倍,那么您将在 X 和 Y 中进行 0.5 的缩放变换,并在 X 和 Y 中进行 0.25 的平移(您可能需要检查其数学和极性,虽然)。

您可能还需要使用 -setBackgroundColorRed:green:blue:alpha: 设置变换滤镜的背景以匹配图像的背景(在本例中为白色),否则您将默认情况下在原始图像的尺寸之外获得黑色区域。

如果您在区域中心调整了图像的大小,您将对其应用模糊,这将导致模糊超出原始图像的限制。

关于IOS:在不剪裁模糊的情况下向 UIImage 添加模糊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23930719/

相关文章:

ios - 一分钟后用 nstimer 重新加载 json 数据变得疯狂

ios - 从用户通知中打开设置URL?

ios - SKAction.repeatActionForever 只在第一次调用时计算随机数

iOS 在 `Files` 应用程序中点击文件时打开应用程序

ios - 如何在文本字段中对齐此类占位符位置?

iphone - iAd 不显示横幅广告

ios - 在 xib 的每一行中使用 uitableview 自定义多个单元格

ios - 使用 UnsafeMutablePointer 数组

ios - GPUImageMovie 在应用滤镜时暂停

ios - 如何将 `CVOpenGLESTextureCacheRef` 转换为 `CVMetalTextureCacheRef` ?