QR艺术:开源项目打造ikun二维码

引言

二维码在现代生活中已经成为了不可或缺的工具,被广泛应用于电子支付、产品标识、活动签到等多个领域。GitHub上有许多开源项目专注于二维码的生成,其中之一是值得关注的项目。本篇博文将深入介绍使用GitHub上的开源项目生成二维码的技术细节,帮助读者更好地理解和应用这些工具。

第一部分:选择合适的GitHub开源项目

GitHub上有很多优秀的二维码生成项目,其中一些备受推崇的包括:

  1. QRCode:https://github.com/liuyueyi/quick-media
  2. zxing:https://github.com/zxing/zxing
  3. google/zx:https://github.com/google/zx
  4. go-qrcode:https://github.com/skip2/go-qrcode
  5. qr-code-generator:https://github.com/nayuki/QR-Code-generator

在选择开源项目时,我们需要考虑项目的活跃度、文档质量、社区支持等因素。

第二部分:使用QRCode生成普通二维码

2.1 QRCode简介

QRCode是一款适用于JAVA的二维码生成库。
官方使用手册:QRCoder官网

2.2 集成QRCode到JAVA项目

在使用QRCode之前,需要将其集成到JAVA项目中。你可以通过Maven或Gradle来引入QRCode的依赖。以下是使用Maven的示例:

<dependencies>
        <dependency>
            <groupId>com.github.liuyueyi.mediagroupId>
            <artifactId>qrcode-pluginartifactId>
            <version>2.5.3version>
        dependency>
        <dependency>
            <groupId>commons-langgroupId>
            <artifactId>commons-langartifactId>
            <version>2.6version>
        dependency>

    dependencies>

2.3 生成简单文本二维码

在JAVA中,我们可以创建一个测试类,专门用于生成二维码。以下是一个简单的示例:

 @Test
    public void test01() throws IOException, WriterException {
        String msg = "https://blog.csdn.net/m0_53127626";
        // 生成二维码,并输出为qr.png图片
        boolean ans = QrCodeGenWrapper.of(msg).asFile("src/main/resources/qr.png");
    }

QR艺术:开源项目打造ikun二维码_第1张图片

第三部分:使用QRCode生成定制二维码

3.1 圆角二维码

 @Test
    public void test02() {
        try {
            // 生成二维码,并输出为qr.png图片
            String msg = "https://blog.csdn.net/m0_53127626";
            boolean ans = QrCodeGenWrapper.of(msg)
                    .setW(500)
                    .setPadding(3)
                    // 圆角二维码, 不建议使用圆形的二维码,会导致生成的二维码不可用
                    .setQrStyle(QrCodeOptions.ImgStyle.ROUND)
                    // 圆角弧度默认是宽高的 1/8, 可以根据需要自行设置
                    .setQrCornerRadiusRate(0.125F)
                    .setPicType("png")
                    .asFile("src/main/resources/qr2.png");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

QR艺术:开源项目打造ikun二维码_第2张图片

3.2 颜色二维码

默认的二维码为白底黑块,如果我希望生成白底蓝块(探测图形外青内红)的二维码,可以如下使用

 @Test
    public void test03() throws IOException, WriterException {
        String msg = "https://blog.csdn.net/m0_53127626";
        boolean ans = QrCodeGenWrapper.of(msg)
                .setW(300)
                // 探测图形特殊处理
                .setDetectSpecial()
                // 定位点(探测图形)外边颜色
                .setDetectOutColor(Color.CYAN)
                // 定位点内部颜色
                .setDetectInColor(Color.RED)
                // 二维码着色点
                .setDrawPreColor(Color.BLUE)
                // 二维码背景图
                .setDrawBgColor(0xffffffff)
                .asFile("src/main/resources/qr3.png");

    }

QR艺术:开源项目打造ikun二维码_第3张图片

3.3 logo二维码

logo目前支持两种样式,一个是圆角logo,一个是直接原图不做处理;下面是一个简单的圆角logo,并带上边框的实例

@Test
    public void test04() throws IOException, WriterException {
        String msg = "https://blog.csdn.net/m0_53127626";
        // 这里的图片地址,支持网络图片,本地相对路劲图片,本地绝对路径图片
        String logo = "https://profile-avatar.csdnimg.cn/8fbb637b12fc4276932d5631f421e5ea_m0_53127626.jpg!1";
        boolean ans = QrCodeGenWrapper.of(msg)
                .setLogo(logo)
                .setLogoStyle(QrCodeOptions.LogoStyle.ROUND)
                .setLogoBgColor(0xfffefefe)
                .setLogoBorderBgColor(0xffc7c7c7)
                .setLogoBorder(true)
                .asFile("src/main/resources/qr4.png");
    }

QR艺术:开源项目打造ikun二维码_第4张图片

3.4圆形 logo二维码

 @Test
    public void test05() throws IOException, WriterException {
        String msg = "https://blog.csdn.net/m0_53127626";
        // 这里的图片地址,支持网络图片,本地相对路劲图片,本地绝对路径图片
        String logo = "https://profile-avatar.csdnimg.cn/8fbb637b12fc4276932d5631f421e5ea_m0_53127626.jpg!1";
        boolean ans = QrCodeGenWrapper.of(msg)
                .setW(400)
                .setLogo(logo)
                // 圆形logo支持
                .setLogoStyle(QrCodeOptions.LogoStyle.CIRCLE)
                .setLogoBgColor(0xfffefefe)
                .setLogoBorderBgColor(0xffc7c7c7)
                .setLogoBorder(true)
                .asFile("src/main/resources/qr5.png");
    }

QR艺术:开源项目打造ikun二维码_第5张图片

3.5背景图二维码

背景图目前支持三种样式,分别是二维码全覆盖在背景图上,在背景图的自定区间进行绘制二维码,生成透明二维码但使用背景图进行渲染,下面

      @Test
    public void test06() throws IOException, WriterException {
        String msg = "https://blog.csdn.net/m0_53127626";
        // 这里的图片地址,支持网络图片,本地相对路劲图片,本地绝对路径图片
        String bg = "https://img2.baidu.com/it/u=2564921989,1524882583&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500";
        boolean ans = QrCodeGenWrapper.of(msg)
                .setBgImg(bg)
                .setW(500)
                .setBgOpacity(0.5f)
                .asFile("src/main/resources/qr6.png");
    }

QR艺术:开源项目打造ikun二维码_第6张图片

3.6文字二维码

指定一串字符串,根据字符串内容生成二维码

 @Test
    public void test07() throws IOException, WriterException {
        String msg = "https://blog.csdn.net/m0_53127626";
        // 这里的图片地址,支持网络图片,本地相对路劲图片,本地绝对路径图片
        int size = 500;
            boolean ans = QrCodeGenWrapper.of(msg)
                    .setW(size)
                    .setH(size)
                    // 不指定text时,默认文本为千字文,宋体加粗
                    .setQrText("奇遇少年")
                    .setDetectSpecial()
                    .setErrorCorrection(ErrorCorrectionLevel.H)
                    .setDrawStyle(QrCodeOptions.DrawStyle.TXT)
                    .setPicType("png")
                    .asFile("src/main/resources/qr7.png");
    }

QR艺术:开源项目打造ikun二维码_第7张图片

3.7 动态二维码

接下来介绍一下动态二维码的生成,和背景图的使用姿势基本上完全以往,唯一的区别就是背景图为gif动图

   @Test
    public void test08() throws IOException, WriterException {
        String msg = "https://blog.csdn.net/m0_53127626";
        // 这里的图片地址,支持网络图片,本地相对路劲图片,本地绝对路径图片
        String bg = "https://5b0988e595225.cdn.sohucs.com/images/20190502/ae86d1b2f3e84ad7b29d91fa143c738a.gif";
        boolean ans = QrCodeGenWrapper.of(msg)
                .setW(500)
                .setBgImg(bg)
                .setBgOpacity(0.6f)
                .setPicType("gif")
                .asFile("src/main/resources/qr8.gif");
    }

结语

通过以上步骤,你已经成功集成了QRCode,并在JAVA项目中实现了二维码的生成。这个功能在电子支付、活动签到、联系方式分享等场景中都有广泛的应用。希望本篇博文能够帮助你更好地理解如何在JAVA中使用QRCode生成二维码,为你的项目增添更多的交互性和便利性。

你可能感兴趣的:(java)