iOS Zoom/Distort 使用 CIFilter 的图像的特定部分

iOS Zoom/Distort a particular part of the image using CIFilter

用例是检测图像中的某些东西,zoom/distort-outward 就像您通过放大镜看一样。

现在我知道放大的点了,但我需要一个 CIFilter 可以做同样的事情。

尝试了 CIHoleDistortion 但没有成功。该文档对我来说似乎没问题,它应该可以工作,但它只会创建一个黑洞,并且它周围的区域会扭曲。

let distortion = CIFilter(name: "CIHoleDistortion")
distortion.setValue(sourceImage, forKey: kCIInputImageKey)
distortion.setValue(CIVector.init(cgPoint: CGPoint.init(x: 200, y: 200)), forKey: "inputCenter")
distortion.setValue(NSNumber.init(value: 100), forKey: "inputRadius")

测试结果如下:

CIBumpDistortion怎么样?

CIBumpDistortion 就像上面 Frank 提到的,但是 scale 参数实际上是这样工作的: scale < 0 -> concave; scale > 0 -> 凸。

另一个(也许更好)选项是使用 CIGlassLozenge 过滤器:

  1. inputRefraction 设置为略大于 1 的值(例如 1.06)

  2. inputPoint0inputPoint1都与缩放点的坐标对齐

  3. 调整半径以获得所需的效果。附例使用半径1000.

如果您想实时使用此过滤器(以及 250 个 CIFilters 中的任何其他过滤器),请查看此应用:https://apps.apple.com/us/app/filter-magic/id1594986951