Swift 生成二维码和条形码

 ///生成二维码

    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

    }

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容