我找到了一个样本QR生成器代码,它可以完美地生成QR码图像,但使用Apple的Api将图像转换为jpeg或png数据总是失败(我的意思是零),我该怎么办?
class QRGenerator {
static var filter = CIFilter(name: "CIQRCodeGenerator")
static func generateCode(_ string: String, foregroundColor: UIColor = .black, backgroundColor: UIColor = .white) -> UIImage? {
guard let filter = filter,
let data = string.data(using: .isoLatin1, allowLossyConversion: false) else {
return nil
}
filter.setValue(data, forKey: "inputMessage")
guard let ciImage = filter.outputImage else {
return nil
}
let transformed = ciImage.transformed(by: CGAffineTransform.init(scaleX: 10, y: 10))
let invertFilter = CIFilter(name: "CIColorInvert")
invertFilter?.setValue(transformed, forKey: kCIInputImageKey)
let alphaFilter = CIFilter(name: "CIMaskToAlpha")
alphaFilter?.setValue(invertFilter?.outputImage, forKey: kCIInputImageKey)
if let outputImage = alphaFilter?.outputImage {
return UIImage(ciImage: outputImage, scale: 2.0, orientation: .up)
.withRenderingMode(.alwaysTemplate)
}
return nil
}
}
let image = self.qrIV.image!
if let imageData = image.jpegData(compressionQuality: 1), let thumbData = image.aspectRatioResize(to: CGSize(width: 20, height: 20))?.jpegData(compressionQuality: 0.7) {
printLog("something")
}
else if let imageData = image.pngData(), let thumbData = image.pngData() {
printLog("something")
}