如何在同一图像的多个尺寸上实现相同的CIFilter效果

时间:2016-09-19 15:10:15

标签: ios swift cifilter

由于性能问题,我需要过滤掉第一张小图像,然后过滤出更高分辨率的图像。

enter image description here

我使用CICrystallize过滤器,对于不同的图像分辨率,我无法获得相同的结果。我尝试使用这样的方法根据图像大小更改输入半径值:

let radiusValue = image.size.width / 15.0
filter.setValue(radiusValue, forKey: kCIInputRadiusKey)

但结果无效,如图所示。

2 个答案:

答案 0 :(得分:0)

我不知道你到底意味着什么。 (调整大小?/作物?)

这样怎么样?如果图像和小图像是相同的方面,你可以得到一个好的结果。

let ratio  = smallImage.size.width / originalSizeImage.size.width
let radius = 30

filter.setValue(radius * ratio, forKey: kCIInputRadiusKey)

答案 1 :(得分:0)

您可以尝试:

let inputSizeFactor = min(inputImage.size.width, inputImage.size.height) / 1000
let scaledRadius = radius * inputSizeFactor
filter.setValue(scaledRadius, forKey: kCIInputRadiusKey)

之所以起作用是因为

  

半径确定用于创建效果的像素数。   半径越大,产生的晶体越大。


谢谢@FrankSchlegel