簡體   English   中英

從UIImage刪除顏色

[英]Removing a colour from a UIImage

我有一張圖片:

在此處輸入圖片說明

如您所見,條形碼與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:當您說“綠屏”時,您的意思是(在成像語言中)像素是透明的。 這由顏色(R,G,B,A)的alpha分量表示。 該濾鏡將每個像素設置為白色,但使用原始顏色設置Alpha。 白色(為1.0)是完全不透明的alpha,而黑色(為0.0)是完全透明的。 如果您還有其他灰度級,則這些像素將是半透明的白色。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM