美文网首页
Swift 生成二维码和条形码

Swift 生成二维码和条形码

作者: 光光6 | 来源:发表于2021-06-20 23:38 被阅读0次

 ///生成二维码

    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

    }

相关文章

网友评论

      本文标题:Swift 生成二维码和条形码

      本文链接:https://www.haomeiwen.com/subject/xqeeyltx.html