如何解决为什么SwiftUI中Image和CIImage之间的亮度过滤器不同?
我正在调整图像的亮度。
首先,我使用 SwiftUI图像来显示图像:
Image(xxx)
.brightness(-0.5)
然后,我使用 CIImage 通过这种亮度调整来生成新图像:
func drawPic(img: UIImage) -> UIImage {
let cgimage: CGImage = img.cgImage!
let image = CIImage(cgImage: cgimage)
let parameters = [
"inputBrightness": Float(-0.5)
]
let outputImage = image.applyingFilter("CIColorControls",parameters: parameters)
let contextv = CIContext(options: nil)
let CgPic = contextv.createCGImage(outputImage,from: outputImage.extent)!
return UIImage(cgImage: CgPic)
}
但是当我预览这些图像时,我发现它们的颜色并不相同:
谁能告诉我为什么以及如何解决这个问题?
所有代码:
import SwiftUI
import UIKit
import CoreImage
import CoreImage.CIFilterBuiltins
struct TestImage: View {
var body: some View {
VStack{
Image("colorcircle2").resizable().frame(width: 200,height: 200,alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/)
Text("Original Image").padding(.bottom,24.0)
Image("colorcircle2").resizable().frame(width: 200,alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/).brightness(-0.5)
Text("SwiftUI Image").padding(.bottom,24.0)
Image(uiImage: drawPic(img: UIImage(imageLiteralResourceName: "colorcircle2"))).resizable().frame(width: 200,alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/)
Text("CIImage").padding(.bottom,24.0)
}
}
}
func drawPic(img: UIImage) -> UIImage {
let cgimage: CGImage = img.cgImage!
let image = CIImage(cgImage: cgimage)
let parameters = [
"inputBrightness": Float(-0.5)
]
let outputImage = image.applyingFilter("CIColorControls",from: outputImage.extent)!
return UIImage(cgImage: CgPic)
}
struct TestImage_Previews: PreviewProvider {
static var previews: some View {
TestImage()
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。