Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么SwiftUI中图像和CIImage之间的亮度过滤器不同? 我正在调整图像的亮度。_Ios_Swift_Swiftui_Uikit_Core Image - Fatal编程技术网

Ios 为什么SwiftUI中图像和CIImage之间的亮度过滤器不同? 我正在调整图像的亮度。

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

首先,我使用了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 = [
        "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(全白色加亮)之间的值,表示亮度效果的强度。。因此,消极因素甚至超出了合同范围。