小编典典

如何在Swift中从字符串生成条形码?

swift

我是一名新的iOS开发人员。我想知道如何在Swift中生成条形码。

我已经有了代码,可以从多种资源中学习如何读取条形码,但是我没有发现任何有关从字符串生成条形码的内容。

非常感谢!

PS:我知道对此也有类似的问题,但这是针对Objective-C的。我不了解Obj-C,但发现来自.NET很难。


阅读 312

收藏
2020-07-07

共1个答案

小编典典

您可以使用CoreImage(import CoreImage)过滤器来做到这一点!

~~~~

    class Barcode {
        class func fromString(string : String) -> UIImage? {
             let data = string.data(using: .ascii)
             if let filter = CIFilter(name: "CICode128BarcodeGenerator") {
                  filter.setValue(data, forKey: "inputMessage")
                  if let outputCIImage = filter.outputImage {
                       return UIImage(ciImage: outputCIImage)
                  }
             }
             return nil
        }
    }

    let img = Barcode.fromString("whateva")

较新的版本,guard且初始化程序失败:

extension UIImage {

    convenience init?(barcode: String) {
        let data = barcode.data(using: .ascii)
        guard let filter = CIFilter(name: "CICode128BarcodeGenerator") else {
            return nil
        }
        filter.setValue(data, forKey: "inputMessage")
        guard let ciImage = filter.outputImage else {
            return nil
        }
        self.init(ciImage: ciImage)
    }

}

用法:

let barcode = UIImage(barcode: "some text") // yields UIImage?

根据文档

根据ISO / IEC
15417:2007标准生成代表输入数据的输出图像。输出图像中条形码的每个模块(垂直线)的宽度为一个像素。条形码的高度为32像素。要从字符串或URL创建条形码,请使用NSASCIIStringEncoding字符串编码将其转换为NSData对象。

2020-07-07