Qrcode生成中间带log的二维码图片

Qrcode生成中间带log的二维码图片

1.引入依赖
   <dependency>
            <groupId>com.swetake.util</groupId>
            <artifactId>QRCode</artifactId>
            <version>3.0</version>
        </dependency>
2.测试
public class QRCodeUtil {
    public static int createQRCode(String content, String imgPath, String logo) {
        try {
            Qrcode qrcodeHandler = new Qrcode();
            qrcodeHandler.setQrcodeErrorCorrect('M');
            qrcodeHandler.setQrcodeEncodeMode('B');
            qrcodeHandler.setQrcodeVersion(7);
            byte[] contentBytes = content.getBytes("gb2312");
            //构造一个BufferedImage对象 设置宽、高
            BufferedImage bufImg = new BufferedImage(140, 140, BufferedImage.TYPE_INT_RGB);
            Graphics2D gs = bufImg.createGraphics();
            gs.setBackground(Color.WHITE);
            gs.clearRect(0, 0, 140, 140);
            // 设定图像颜色 > BLACK
            gs.setColor(Color.BLACK);
            // 设置偏移量 不设置可能导致解析出错
            int pixoff = 2;
            //输出内容 > 二维码
            if (contentBytes.length > 0 && contentBytes.length < 120) {
                boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);
                for (int i = 0; i < codeOut.length; i++) {
                    for (int j = 0; j < codeOut.length; j++) {
                        if (codeOut[j][i]) {
                            gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3, 3);

                        }
                    }
                }
            } else {
                System.err.println("QRCode content bytes length = " + contentBytes.length + " not in [ 0,120 ]. ");
                return -1;
            }
            Image img = ImageIO.read(new File(logo));//实例化一个Image对象。
            gs.drawImage(img, 44, 55, 49, 30, null);
            gs.dispose();
            bufImg.flush();
            // 生成二维码QRCode图片
            File imgFile = new File(imgPath);
            ImageIO.write(bufImg, "png", imgFile);
        } catch (Exception e) {
            e.printStackTrace();
            return -100;
        }
        return 0;
    }

    public static void main(String[] args) {
        createQRCode("www.baidu.com", "./2.jpg", "./1.png");

    }
}
3.效果

在这里插入图片描述

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 qrcode.js 库生成二维码是一个 SVG 图像,你可以通过以下步骤将其转换为 PNG 或 JPEG 格式的图像: 1. 将 SVG 图像作为字符串获取并将其插入到 HTML 页面中的 `<svg>` 标记中。 2. 使用 `canvas` 元素将 SVG 图像绘制到画布上。 3. 使用 `canvas` 元素的 `toDataURL()` 方法将画布内容转换为 PNG 或 JPEG 格式的数据 URL。 4. 创建一个新的 `Image` 对象,将数据 URL 分配给 `src` 属性。 5. 在 `Image` 对象的 `onload` 事件处理程序中,将图像绘制到画布上。 6. 使用 `canvas` 元素的 `toDataURL()` 方法将画布内容转换为 PNG 或 JPEG 格式的数据 URL。 以下是示例代码: ```javascript // 获取 SVG 图像字符串 var svgString = document.querySelector('svg').outerHTML; // 创建一个新的画布元素 var canvas = document.createElement('canvas'); canvas.width = 300; canvas.height = 300; // 获取画布上下文 var ctx = canvas.getContext('2d'); // 将 SVG 图像绘制到画布上 var DOMURL = window.URL || window.webkitURL || window; var img = new Image(); var svg = new Blob([svgString], { type: 'image/svg+xml;charset=utf-8' }); var url = DOMURL.createObjectURL(svg); img.onload = function () { ctx.drawImage(img, 0, 0); DOMURL.revokeObjectURL(url); // 将画布内容转换为 PNG 格式的数据 URL var pngUrl = canvas.toDataURL('image/png'); // 创建一个新的 Image 对象并将 PNG 数据 URL 分配给 src 属性 var img2 = new Image(); img2.src = pngUrl; // 在 Image 对象的 onload 事件处理程序中,将 PNG 图像绘制到画布上 img2.onload = function () { ctx.drawImage(img2, 0, 0); DOMURL.revokeObjectURL(pngUrl); // 将画布内容转换为 PNG 格式的数据 URL var finalPngUrl = canvas.toDataURL('image/png'); // 在此处使用 finalPngUrl 来处理图像 }; }; img.src = url; ``` 请注意,上述代码生成的 PNG 图像将具有与画布相同的大小。您可以根据需要更改画布的大小,并相应地更改 `canvas` 元素的宽度和高度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值