由于性能问题,我需要过滤掉第一张小图像,然后过滤出更高分辨率的图像。
我使用CICrystallize过滤器,对于不同的图像分辨率,我无法获得相同的结果。我尝试使用这样的方法根据图像大小更改输入半径值:
let radiusValue = image.size.width / 15.0
filter.setValue(radiusValue, forKey: kCIInputRadiusKey)
但结果无效,如图所示。
答案 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