繁体   English   中英

iOS:CIColorInvert 过滤器在设备上不起作用

[英]iOS: CIColorInvert filter is not working on device

这是我反转图像的 colors 的代码块:

import Foundation
import UIKit
import CoreImage

extension UIImage {
    static let defaultImage = UIImage(systemName: "person.circle.fill")!
    func colorInverted() -> UIImage {
        guard let ciImage = CIImage(image: self) else {
            print("UIImage: Failed to get CIImage!")
            return UIImage.defaultImage
        }
        guard let filter = CIFilter(name: "CIColorInvert") else {
            print("UIImage: Failed to get filter!")
            return UIImage.defaultImage
        }
        filter.setValue(ciImage, forKey: kCIInputImageKey)
        guard let image = filter.outputImage else {
            print("UIImage: Failed to get output image!")
            return UIImage.defaultImage
        }
        return UIImage(ciImage: image)
    }
}

这在模拟器上运行良好:

在模拟器上

但在真实设备上,结果是全蓝色图像:

在真实设备上

我已经搜索了一段时间,但无法找到解决方案。 任何人都可以帮忙吗?

注意:我从 GitHub API 获取图像:

https://avatars0.githubusercontent.com/u/1?v=4

使用 CIContext 代替 UIImage(CIImage:)

func applyFilter(){
    let image = CIImage(CGImage: myimage.image?.CGImage)
    let filter = CIFilter(name: "CISepiaTone")
    filter.setDefaults()
    filter.setValue(image, forKey: kCIInputImageKey)

    let context = CIContext(options: nil)
    let imageRef = context.createCGImage(filter.outputImage, fromRect: image.extent())
    myimage.image = UIImage(CGImage: imageRef)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM