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?
5条答案
按热度按时间3lxsmp7m1#
您可以使用CoreImage(
import CoreImage
)过滤器来完成此操作!字符串
一个新的版本,带有
guard
和可失败的初始化程序:型
使用方法:
型
根据文档:
根据ISO/IEC 15417:2007标准生成表示输入数据的输出图像。输出图像中条形码的每个模块(垂直线)的宽度为1像素。条形码的高度为32像素。要从字符串或URL创建条形码,请使用NSASCIIStringEncoding字符串编码将其转换为NSData对象。
y1aodyip2#
改进代码:
字符串
vvppvyoh3#
如果你的部署目标至少是iOS 8,你可以使用Core Image。下面是我的BarcodeGenerator类(你需要
import CoreImage
):字符串
可以这样用
型
h9a6wy2h4#
像这样使用,
字符串
dly7yett5#
与answer from Matteo Pacini类似,这里是使用较新的类型安全
CIFilter
示例(iOS 13.0+)的版本。字符串
使用方法:
型
相关文件: