如何生成EAN13条形码?

4

我想创建一个简单的EAN13图像来显示字符串生成条形码。

我尝试使用这段代码,但它只能生成Code128。我应该使用什么来生成EAN13?

class Barcode {

  class func fromString(string : String) -> UIImage? {

      let data = string.dataUsingEncoding(NSASCIIStringEncoding)
      let filter = CIFilter(name: "CICode128BarcodeGenerator")
      filter.setValue(data, forKey: "inputMessage")
      return UIImage(CIImage: filter.outputImage)
  }
}

let img = Barcode.fromString("1234567890123")

1
CIFilter似乎不支持EAN13,只支持QR Code、Aztec、Code 128和PDF 417。 - rmaddy
4
可能是在iOS中生成条形码的重复问题。 - jcaron
2个回答

2

你可以尝试这个 EAN13BarcodeGenerator

使用方法非常简单:

BarCodeView *barCodeView = [[BarCodeView alloc] initWithFrame:kBarCodeFrame];
[self.view addSubview:barCodeView];
[barCodeView setBarCode:GetNewRandomEAN13BarCode()];

1
Swift版本: let rect = CGRect(x: 100, y: 55, width: 113, height: 100) let barcodeView = BarCodeView(frame: rect) self.view.addSubview(barcodeView)barcodeView.barCode = "4012345678901" - Massimo Fazzolari

-6

关于OSX,我想分享一下我的看法。

func barCodeFromString(string : String, destSize: NSSize) -> NSImage? {
    let data = string.data(using: .ascii)
    guard let filter = CIFilter(name: "CICode128BarcodeGenerator") else{
        return nil
    }

    filter.setValue(data, forKey: "inputMessage")
    guard let ciImage : CIImage = filter.outputImage else{
        return nil
    }

    let c_size = ciImage.extent.size

    let w_ratio = destSize.width/c_size.width
    let h_ratio = destSize.height/c_size.height
    let ratio = w_ratio>h_ratio ? h_ratio : w_ratio
    let transform = CGAffineTransform(scaleX: ratio, y: ratio)
    let scaled = ciImage.transformed(by: transform)

    let rep = NSCIImageRep(ciImage: scaled)
    let nsImage = NSImage(size: rep.size)
    nsImage.addRepresentation(rep)
    return nsImage
}

1
这个问题是在询问如何生成EAN13条形码,而不是Code128条形码。 - rmaddy
我知道,这就是为什么我写了“我的两分钱...” :) - ingconti
目标是回答问题。 - rmaddy
将“CICode128BarcodeGenerator”更改为“CIQRCodeGenerator”。 - ingconti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接