【发布时间】:2026-01-04 17:50:01
【问题描述】:
照片编辑调整可在应用调整时提供应用调整的实时视图。我找不到任何有关您如何执行此操作的示例。所有示例似乎都表明您通过各种管道应用过滤器,然后获取结果图像并使用结果更新屏幕。请参阅下面的代码。
照片似乎显示了应用于屏幕图像的调整。他们是如何做到这一点的?
func editImage(inputImage: CGImage) {
DispatchQueue.global().async {
let beginImage = CIImage(cgImage: inputImage)
guard let exposureOutput = self.exposureFilter(beginImage, ev: self.brightness) else {
return
}
guard let vibranceOutput = self.vibranceFilter(exposureOutput, amount: self.vibranceAmount) else {
return
}
guard let unsharpMaskOutput = self.unsharpMaskFilter(vibranceOutput, intensity: self.unsharpMaskIntensity, radius: self.unsharpMaskRadius) else {
return
}
guard let sharpnessOutput = self.sharpenFilter(unsharpMaskOutput, sharpness: self.unsharpMaskIntensity) else {
return
}
if let cgimg = self.context.createCGImage(sharpnessOutput, from: vibranceOutput.extent) {
DispatchQueue.main.async {
self.cgImage = cgimg
}
}
}
}
【问题讨论】:
-
“他们是如何做到这一点的?”这是什么'?你的意思是,使产生的效果永久化?
-
这是实现对显示应用效果的图像的实时更新 - 顺便说一句,我想我找到了答案 - MTKView 并使用 draw() 函数在应用效果时渲染图像。有点让它工作,但图像没有填满整个视图 - 所以我想我必须计算出金属坐标系以及如何缩放图像以适应视图。它从来没有像他们说的那么容易!
标签: ios swift macos core-image