我阅读了有关将CIFilter应用于UIImage并显示回去的最新知识。但是我仍然获得比原始图像更大的图像,不知道为什么。也许我缺少一些缩放因子?
这是我的屏幕,带有普通的UIImageView和一些图像。唯一的限制是中心X / Y才能进行观看。
应用过滤器之前的屏幕截图
但是我已将此代码添加到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!)
我得到的结果不是预期的(是,应用了过滤器,但大小被破坏了)。我做错了什么?
应用过滤器后的屏幕截图
答案 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
现在结果如下所示:)