如何快速生成一个string的条形码

我是一个新的IOS开发者。 我徘徊如何迅速生成条形码。

我已经有了代码,从哪里学习如何读取条形码有多种资源,但是我没有发现任何有关从string中生成一个的讨论。

非常感谢!

Ps我知道有一个类似的问题,但在Objective-C中。 我不知道oc,我发现很难从.NET

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

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

根据文件 :

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

改进的代码:

  • 条码缩放
  • 设置条码图像边距
  • 将UIImage转换为NSData(出于某种原因,上面的代码是不可能的)。
  • 共享条形码图像时不会失败(可能是因为同一个bug)

Swift 3

 func generateBarcode(from string: String) -> UIImage? { let data = string.data(using: String.Encoding.ascii) if let filter = CIFilter(name: "CICode128BarcodeGenerator") { filter.setDefaults() //Margin filter.setValue(7.00, forKey: "inputQuietSpace") filter.setValue(data, forKey: "inputMessage") //Scaling let transform = CGAffineTransform(scaleX: 3, y: 3) if let output = filter.outputImage?.applying(transform) { let context:CIContext = CIContext.init(options: nil) let cgImage:CGImage = context.createCGImage(output, from: output.extent)! let rawImage:UIImage = UIImage.init(cgImage: cgImage) //Refinement code to allow conversion to NSData or share UIImage. Code here: //http://stackoverflow.com/questions/2240395/uiimage-created-from-cgimageref-fails-with-uiimagepngrepresentation let cgimage: CGImage = (rawImage.cgImage)! let cropZone = CGRect(x: 0, y: 0, width: Int(rawImage.size.width), height: Int(rawImage.size.height)) let cWidth: size_t = size_t(cropZone.size.width) let cHeight: size_t = size_t(cropZone.size.height) let bitsPerComponent: size_t = cgimage.bitsPerComponent //THE OPERATIONS ORDER COULD BE FLIPPED, ALTHOUGH, IT DOESN'T AFFECT THE RESULT let bytesPerRow = (cgimage.bytesPerRow) / (cgimage.width * cWidth) let context2: CGContext = CGContext(data: nil, width: cWidth, height: cHeight, bitsPerComponent: bitsPerComponent, bytesPerRow: bytesPerRow, space: CGColorSpaceCreateDeviceRGB(), bitmapInfo: cgimage.bitmapInfo.rawValue)! context2.draw(cgimage, in: cropZone) let result: CGImage = context2.makeImage()! let finalImage = UIImage(cgImage: result) return finalImage } } return nil }