Ios 为什么SwiftUI中图像和CIImage之间的亮度过滤器不同? 我正在调整图像的亮度。
首先,我使用了SwiftUI Image来显示图像:Ios 为什么SwiftUI中图像和CIImage之间的亮度过滤器不同? 我正在调整图像的亮度。,ios,swift,swiftui,uikit,core-image,Ios,Swift,Swiftui,Uikit,Core Image,首先,我使用了SwiftUI Image来显示图像: Image(xxx) .brightness(-0.5) 然后,我使用CIImage生成一个新图像,并进行亮度调整: func drawPic(img: UIImage) -> UIImage { let cgimage: CGImage = img.cgImage! let image = CIImage(cgImage: cgimage) let parameters = [ &qu
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, height: 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, height: 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", parameters: parameters)
let contextv = CIContext(options: nil)
let CgPic = contextv.createCGImage(outputImage, from: outputImage.extent)!
return UIImage(cgImage: CgPic)
}
struct TestImage_Previews: PreviewProvider {
static var previews: some View {
TestImage()
}
}
这些是不同的效果,由doc on
。亮度
-参数量:介于0(无效果)和1(全白色加亮)之间的值,表示亮度效果的强度。。因此底片甚至超出了合同范围。这些是不同的效果,由doc on决定。亮度
-参数量:一个介于0(无效果)和1(全白色加亮)之间的值,表示亮度效果的强度。。因此,消极因素甚至超出了合同范围。