///生成二维码
public class funcgenerateQRCode(_text:String,_width:CGFloat,_fillImage:UIImage? =nil,_color:UIColor? =nil) ->UIImage? {
//给滤镜设置内容
guardletdata = text.data(using: .utf8)else{
returnnil
}
ifletfilter =CIFilter(name:"CIQRCodeGenerator") {
filter.setValue(data, forKey:"inputMessage")
// 设置生成的二维码的容错率
// value = @"L/M/Q/H"
filter.setValue("H", forKey:"inputCorrectionLevel")
//获取生成的二维码
guardletoutPutImage = filter.outputImageelse{
returnnil
}
// 设置二维码颜色
letcolorFilter =CIFilter(name:"CIFalseColor", parameters: ["inputImage":outPutImage,"inputColor0":CIColor(cgColor: color?.cgColor??UIColor.black.cgColor),"inputColor1":CIColor(cgColor:UIColor.clear.cgColor)])
//获取带颜色的二维码
guardletnewOutPutImage = colorFilter?.outputImageelse{
returnnil
}
letscale = width/newOutPutImage.extent.width
lettransform =CGAffineTransform(scaleX: scale, y: scale)
letoutput = newOutPutImage.transformed(by: transform)
letQRCodeImage =UIImage(ciImage: output)
guardletfillImage = fillImageelse{
returnQRCodeImage
}
letimageSize = QRCodeImage.size
UIGraphicsBeginImageContextWithOptions(imageSize, false, UIScreen.main.scale)
QRCodeImage.draw(in:CGRect(x:0, y:0, width: imageSize.width, height: imageSize.height))
letfillRect =CGRect(x: (width-width/5)/2, y: (width-width/5)/2, width: width/5, height: width/5)
fillImage.draw(in: fillRect)
guardletnewImage =UIGraphicsGetImageFromCurrentImageContext()else{returnQRCodeImage }
UIGraphicsEndImageContext()
returnnewImage
}
returnnil
}
///生成条形码
public class funcgenerateCode128(_text:String,_size:CGSize,_color:UIColor? =nil) ->UIImage?
{
//给滤镜设置内容
guardletdata = text.data(using: .utf8)else{
returnnil
}
ifletfilter =CIFilter(name:"CICode128BarcodeGenerator") {
filter.setDefaults()
filter.setValue(data, forKey:"inputMessage")
//获取生成的条形码
guardletoutPutImage = filter.outputImageelse{
returnnil
}
// 设置条形码颜色
letcolorFilter =CIFilter(name:"CIFalseColor", parameters: ["inputImage":outPutImage,"inputColor0":CIColor(cgColor: color?.cgColor??UIColor.black.cgColor),"inputColor1":CIColor(cgColor:UIColor.clear.cgColor)])
//获取带颜色的条形码
guardletnewOutPutImage = colorFilter?.outputImageelse{
returnnil
}
letscaleX:CGFloat= size.width/newOutPutImage.extent.width
letscaleY:CGFloat= size.height/newOutPutImage.extent.height
lettransform =CGAffineTransform(scaleX: scaleX, y: scaleY)
letoutput = newOutPutImage.transformed(by: transform)
letbarCodeImage =UIImage(ciImage: output)
returnbarCodeImage
}
returnnil
}
网友评论