【发布时间】:2017-05-22 03:58:15
【问题描述】:
我正在使用扩展程序对我的图像进行像素化,如下所示:
func pixellated(scale: Int = 8) -> UIImage? {
guard let ciImage = CIImage(image: self), let filter = CIFilter(name: "CIPixellate") else { return nil }
filter.setValue(ciImage, forKey: kCIInputImageKey)
filter.setValue(scale, forKey: kCIInputScaleKey)
guard let output = filter.outputImage else { return nil }
return UIImage(ciImage: output)
}
问题是这里self 表示的图像与我使用UIImage(ciImage: output) 创建的图像大小不同。
例如,使用该代码:
print("image.size BEFORE : \(image.size)")
if let imagePixellated = image.pixellated(scale: 48) {
image = imagePixellated
print("image.size AFTER : \(image.size)")
}
将打印:
image.size BEFORE : (400.0, 298.0)
image.size AFTER : (848.0, 644.0)
大小不一样,比例也不一样。
知道为什么吗?
编辑:
我在扩展中添加了一些打印如下:
func pixellated(scale: Int = 8) -> UIImage? {
guard let ciImage = CIImage(image: self), let filter = CIFilter(name: "CIPixellate") else { return nil }
print("UIIMAGE : \(self.size)")
print("ciImage.extent.size : \(ciImage.extent.size)")
filter.setValue(ciImage, forKey: kCIInputImageKey)
filter.setValue(scale, forKey: kCIInputScaleKey)
guard let output = filter.outputImage else { return nil }
print("output : \(output.extent.size)")
return UIImage(ciImage: output)
}
以下是输出:
UIIMAGE : (250.0, 166.5)
ciImage.extent.size : (500.0, 333.0)
output : (548.0, 381.0)
【问题讨论】:
-
ciImage的extent在创建之后是什么?我怀疑这个问题可能与self的scale有关。 -
@ravron 我更新了问题并在扩展中添加了一些打印。起初看起来像一个比例是的但无法弄清楚为什么
output是这样的(比例不一样)
标签: ios swift uiimage core-image