gpt4 book ai didi

ios - 从 UIImage 中移除颜色

转载 作者:行者123 更新时间:2023-11-28 08:05:50 25 4
gpt4 key购买 nike

我有一张图片:

enter image description here

您可以清楚地看到,条形码与 UI 的配合不是很好:/

我认为一个潜在的解决方法是“绿屏”去除图像中的黑色部分,留下条形码的白色部分。

条形码本身是动态生成的。

func generateBarcode(from string: String) -> UIImage? {
let data = string.data(using: String.Encoding.ascii)

if let filter = CIFilter(name: "CICode128BarcodeGenerator") {
filter.setValue(data, forKey: "inputMessage")

let transform = CGAffineTransform(scaleX: 3, y: 3)

if let output = filter.outputImage?.applying(transform) {
let invertFiler = CIFilter(name: "CIColorInvert")!
invertFiler.setValue(output, forKey: kCIInputImageKey)

return UIImage(ciImage: (invertFiler.outputImage?.applying(transform))!) //TODO: Remove force unwrap
}
}
return nil
}

现在我听说我可以使用“CIColorCube”过滤器,但一直无法使用它。

是否可以去除黑色部分?如果是这样,你能帮我吗?

谢谢

最佳答案

有一个过滤器 (CIMaskToAlpha) 用于获取灰度图像并将灰度级别用作 alpha 值。对于黑白图像,这会使黑色透明而白色不透明-白色,我认为这就是您想要的。

func generateBarcode(from string: String) -> UIImage? {
let data = string.data(using: String.Encoding.ascii)

if let filter = CIFilter(name: "CICode128BarcodeGenerator") {
filter.setValue(data, forKey: "inputMessage")

let transform = CGAffineTransform(scaleX: 3, y: 3)

if let outputBarcode = filter.outputImage?.applying(transform) {
let invertFilter = CIFilter(name: "CIColorInvert")!
invertFilter.setValue(outputBarcode, forKey: kCIInputImageKey)

if let outputInvert = invertFilter.outputImage?.applying(transform) {
let mask = CIFilter(name: "CIMaskToAlpha")!
mask.setValue(outputInvert, forKey: kCIInputImageKey)

return UIImage(ciImage: (mask.outputImage?.applying(transform))!) //TODO: Remove force unwrap
}
}
}
return nil
}

如果将生成的图像放在蓝色背景上,您将只看到白色条。

PS:当您说“绿屏”时,您的意思(用图像语言)是像素是透明的。这由颜色的 alpha 分量(R、G、B、A)表示。此滤镜将每个像素设置为白色,但使用原始颜色设置 alpha。白色(为 1.0)是完全不透明的 alpha,而黑色(为 0.0)是完全透明的。如果您有其他灰度级,这些像素将是半透明的白色。

关于ios - 从 UIImage 中移除颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45130067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com