CIFilter用来创建图像滤镜,一般通过kCIInputImageKey提供输入图像,通过outputImage得到处理过的图像。但是也有一些其他用处,例如CIQRCodeGenerator可以生成二维码。
CIQRCodeGenerator可以有两个参数inputMessage和inputCorrectionLevel。
inputMessage: 是一个Data类型的二维码数据, inputCorrectionLevel:控制生产二维码的容错率
inputMessage 官方推荐用
isoLatin1编码,但是其实这种编码并不支持中文,实测用utf8是可以的
let string = "I love you"
if let data = string.data(using: .utf8) {
let parameters:[String:Any] = ["inputMessage":data]
let filter = CIFilter(name: "CIQRCodeGenerator", withInputParameters: parameters)
if let outputImage = filter?.outputImage {
//处理outputImage
}
}
outputImage是一个CIImage对象,可以通过applying(_ matrix: CGAffineTransform) -> CIImage缩放成合适的大小。