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
缩放成合适的大小。