应用CIFilter后,无论我做什么图像都会变大

时间:2018-08-30 06:21:20

标签: ios swift filter resize

我阅读了有关将CIFilter应用于UIImage并显示回去的最新知识。但是我仍然获得比原始图像更大的图像,不知道为什么。也许我缺少一些缩放因子?

这是我的屏幕,带有普通的UIImageView和一些图像。唯一的限制是中心X / Y才能进行观看。

应用过滤器之前的屏幕截图

enter image description here

但是我已将此代码添加到viewDidLoad()中:

let ciContext = CIContext(options: nil)
let coreImage = CIImage(image: ledImageView.image!)

let filter = CIFilter(name: "CIExposureAdjust")
filter!.setValue(coreImage, forKey: kCIInputImageKey)
filter!.setValue(1.5, forKey: kCIInputEVKey)

let filteredImageData = filter?.outputImage as! CIImage
let filteredImageRef = ciContext.createCGImage(filteredImageData, from: filteredImageData.extent)

ledImageView.image = UIImage(cgImage: filteredImageRef!)

我得到的结果不是预期的(是,应用了过滤器,但大小被破坏了)。我做错了什么?

应用过滤器后的屏幕截图

enter image description here

2 个答案:

答案 0 :(得分:0)

那很奇怪,

输入和输出图像的延伸值是多少?他们匹配吗?

您可以尝试

// crop the output image to the input's image extend
let croppedImage = filteredImageData.cropped(to: coreImage.extent)
let result = UIImage(ciImage: croppedImage)

答案 1 :(得分:0)

我发现了问题的根本原因和解决方案。显然,最终的UIImage缺少 id basket 1 ['2 : 250', '2 : 500'] 2 ['3 : 100', '7 : 200', '11 : 125'] scale。原始(源)图像具有 scale == 3.0 ,而经过处理的图像则保持 scale == 1.0

这是正确的源代码:

imageOrientation

现在结果如下所示:)

Fixed image on ViewController

相关问题