java生成二维码

添加依赖

        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>core</artifactId>
            <version>3.3.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>javase</artifactId>
            <version>3.3.0</version>
        </dependency>

生成二维码保存到指定路径

private void getImage(String text) throws WriterException, IOException {
        String filePath = "D://work/";
        String pa = ".png";
        QRCodeWriter qrCodeWriter = new QRCodeWriter();
        //生成uuid名称
        String uuid = UUID.randomUUID().toString();
        Map hints = new HashMap();
        //设置UTF-8, 防止中文乱码
        hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
        //设置二维码的容错性
        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
        //设置二维码样式
        BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, 400, 400, hints);
        //拼接图片地址
        String paths = filePath + uuid + pa;
        Path path = FileSystems.getDefault().getPath(paths);
        //保存到设置的地址
        MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);

    }

生成二维码转为base64格式

@Override
    public Result getImageCode(String type, String data) {
        //需要编码的内容
        try {
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("type",type);
            jsonObject.put("data",data);
            QRCodeWriter qrCodeWriter = new QRCodeWriter();
            Map hints = new HashMap();
            //设置UTF-8编码格式, 防止中文乱码
            hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
            //设置二维码的容错性
            hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
            //设置二维码图片宽高属性
            BitMatrix bitMatrix = qrCodeWriter.encode(jsonObject.toString(), BarcodeFormat.QR_CODE,430, 430,hints);
            // 写入到输出流
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            MatrixToImageWriter.writeToStream(bitMatrix, "PNG", outputStream);
            //转换为base64格式
            Base64.Encoder encoder = Base64.getEncoder();
            String advUrl = "data:image/jpeg;base64,"
                    +encoder.encodeToString(outputStream.toByteArray());
            //打印base64结果
            System.out.println(advUrl);
            return Result.ok(advUrl);
        }catch (Exception e){
            e.printStackTrace();
            return Result.error("二维码生成失败");
        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值