如何从 ios、swift 中的字符串获取高质量条码图像
How to get a quality barcode image from string in ios, swift
我正在使用如下所示的字符串生成带条形码的图像。
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!)
}
}
所以这会生成准确的图像。但质量很低。我怎样才能提高图像的质量。(我不能增加图像的大小,如果我这样做它看起来像模糊)
尝试transform
让它变大
let transform = CGAffineTransform(scaleX: 3, y: 3)
if let output = filter.outputImage?.applying(transform) {
return UIImage(ciImage: output)
}
当 CIImage
转换为 UIImage
时,它会使用由 CIImage
确定的固定大小,如果您随后尝试放大此图像,比如说通过将其分配给 UIImageView
,您将获得与放大位图相关的典型像素化。
在将图像分配给 UIImage 之前转换图像
if let barImage = filter.outputImage {
let transform = CGAffineTransformMakeScale(5.0, 5.0)
let scaled = barImage.imageByApplyingTransform(transform)
return(UIImage(CIImage: scaled))
}
我的两分钱 OSX :)
func barCodeFromString(string : String) -> 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 transform = CGAffineTransform(scaleX: 5.0, y: 5.0)
let scaled = ciImage.transformed(by: transform)
let rep = NSCIImageRep(ciImage: scaled)
let nsImage = NSImage(size: rep.size)
nsImage.addRepresentation(rep)
return nsImage
}
我正在使用如下所示的字符串生成带条形码的图像。
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!)
}
}
所以这会生成准确的图像。但质量很低。我怎样才能提高图像的质量。(我不能增加图像的大小,如果我这样做它看起来像模糊)
尝试transform
让它变大
let transform = CGAffineTransform(scaleX: 3, y: 3)
if let output = filter.outputImage?.applying(transform) {
return UIImage(ciImage: output)
}
当 CIImage
转换为 UIImage
时,它会使用由 CIImage
确定的固定大小,如果您随后尝试放大此图像,比如说通过将其分配给 UIImageView
,您将获得与放大位图相关的典型像素化。
在将图像分配给 UIImage 之前转换图像
if let barImage = filter.outputImage {
let transform = CGAffineTransformMakeScale(5.0, 5.0)
let scaled = barImage.imageByApplyingTransform(transform)
return(UIImage(CIImage: scaled))
}
我的两分钱 OSX :)
func barCodeFromString(string : String) -> 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 transform = CGAffineTransform(scaleX: 5.0, y: 5.0)
let scaled = ciImage.transformed(by: transform)
let rep = NSCIImageRep(ciImage: scaled)
let nsImage = NSImage(size: rep.size)
nsImage.addRepresentation(rep)
return nsImage
}