将核心图像滤镜(CIBumpDistortion)应用于图像的一个部分+改变CIFilter的select和强度的半径

我想复制这里显示的一些function:

应用程序的屏幕截图

所以我希望用户将CIBumpDistortionfilter应用于图像,并让他select

1)正是他想要通过让他刚刚触摸图像上的相应位置来应用它

2a)圆圈select的大小(上图中的第一个滑块)

2b)CIBumpDistortionfilter的强度(上图中的第二个滑块)

我阅读了一些以前提出的问题,但是它们并没有真正的帮助,其中一些解决scheme听起来非常友好(例如剪切需要的部分,然后重新应用到旧的图像)。 希望我一次不要求太多。 Objective-C将是首选,但任何帮助/提示将非常感激! 先谢谢你!

我写了一个演示(iPad)项目,可以让您应用最受支持的CIFilter。 它询问每个filter所需的参数,并内置支持浮点值以及点和颜色。 对于凹凸失真filter,您可以select一个中心点,一个半径和一个input比例。

该项目被称为CIFilterTest。 你可以从这个链接下载Github的项目: https : //github.com/DuncanMC/CIFilterTest

在应用程序中有相当多的内务pipe理来支持使用任何支持的filter的通用能力,但它应该给你足够的信息来实现你自己的碰撞filter,就像你要求的那样。

我制定了一个应用filter并在没有超出原始图像范围的情况下渲染的方法是首先将一个钳位filter应用到设置为恒等变换的图像( CIAffineClamp )上,并将该filter的输出将其馈送到“目标”filter(在这种情况下为凹凸失真filter)的input中,然后取出该filter的输出并将其input到裁切filter( CICrop )中,使裁切filter的边界被设置为原始图像大小。

ViewController.m中,示例项目中查找的方法称为showImage

你写了:

1)正是他想要通过让他刚刚触摸图像上的相应位置来应用它

2a)圆圈select的大小(上图中的第一个滑块)

2b)CIBumpDistortionfilter的强度(上图中的第二个滑块)

那么, CIBumpDistortion有这些属性:

  • inputCenter是效果的中心
  • inputRadius是圆select的大小
  • inputScale是强度

西蒙