返回顶部
首页 > 资讯 > 后端开发 > JAVA >java:实现用户扫码二维码自动跳转指定链接功能
  • 689
分享到

java:实现用户扫码二维码自动跳转指定链接功能

java开发语言 2023-09-07 06:09:09 689人浏览 独家记忆
摘要

0. 引言 近来接到要实现链接转二维码的需求,通过提供二维码给用户,让用户扫描后自动访问指定的H5页面,从而实现业务流转,这样的功能其实在其他很多场景也会用到,比如资产管理系统中,扫码资产二维码,从而

0. 引言

近来接到要实现链接转二维码的需求,通过提供二维码给用户,让用户扫描后自动访问指定的H5页面,从而实现业务流转,这样的功能其实在其他很多场景也会用到,比如资产管理系统中,扫码资产二维码,从而实现库存盘点、自动入库、自动出库等功能

今天就这类需求场景,给大家做一个讲解示例

1. 需求分析

首先这类场景,我们先把需求简化,其实根本是要客户访问某个链接,比如库存盘点的功能链接,但是又要与具体的实体绑定,比如要知道这个是对应到具体某一个资产的,但其实只是加一个参数就行了,比如 Http://host/assets/check?no=123456, 其中“123456”就是资产编号,这样就对应上了。

也有不是与具体物品绑定的,而是与账号、用户等虚拟信息绑定的场景,比如某一类app推广场景,用户可以生成自己的推广二维码,扫码了二维码注册的新用户,奖励就会算到这个用户的账户中。这种场景就需要和用户绑定,但转换成链接也很好理解,比如http://host/user/invite?userId=123456,这里的userId就是分享二维码的用户的id, 这样只要新用户在访问这个链接是,就能记录是谁推广的

如上,我们的需求定义清楚了,就是要用户访问指定的链接,并且链接上可能会带上一定的参数,而这个链接的展现形式就不是直接显示给链接了,而是以二维码的形式展现。

那我们的核心诉求,就变成了指定的链接转换成二维码。那么,我们来看如何实现

2. 二维码的实质

二维码(QR码)是一种二维图形编码技术,它可以将包含数据的信息以模块化的方式编码成黑白像素点组成的矩阵图案。这些图案可以被扫描设备(如手机相机)捕捉并解码,将其中的数据恢复出来。

实质上,二维码是一种特定的编码方式,可以表示数字、文本、链接、图像等各种类型的数据。

二维码的工作原理基于计算机视觉和图像处理技术。当扫描设备读取二维码时,它首先会通过光源照亮二维码,然后使用感光器记录反射回的光线。这些原始图像数据经过图像预处理、边缘检测和图像分析等步骤后,被转换为数字信号并进行解码,从而恢复出原始的数据。

3. zxing工具实现

在java中,我们可以利用谷歌开源zxing工具包来实现二维码的生成

zxing源码地址:https://github.com/zxing/zxing

引入jar

        <dependency>            <groupId>com.Google.zxinggroupId>            <artifactId>coreartifactId>            <version>3.3.0version>        dependency>

创建工具类

public class QRcodeUtil {    private static final String CHARSET = "utf-8";    private static final String FORMAT_NAME = "JPG";    // 二维码尺寸    private static final int QRCODE_SIZE = 300;        public static BufferedImage createImage(String url) throws Exception {        Hashtable hints = new Hashtable();        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);        hints.put(EncodeHintType.CHARACTER_SET, CHARSET);        hints.put(EncodeHintType.MARGIN, 1);        BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, QRCODE_SIZE, QRCODE_SIZE,                hints);        int width = bitMatrix.getWidth();        int height = bitMatrix.getHeight();        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);        for (int x = 0; x < width; x++) {            for (int y = 0; y < height; y++) {                image.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);            }        }        return image;    }        public static void encode(String url, httpservletResponse response)            throws Exception {        BufferedImage image = createImage(url);        ImageIO.write(image, FORMAT_NAME, response.getOutputStream());    }}

创建实现转换的接口

@GetMapping("code")    public void qrcode(String url, HttpServletResponse response) throws Exception {        QRcodeUtil.encode(url, response);    }

测试,访问该生成二维码的接口:http://localhost:8092/orders/code?url=http://www.baidu.com

这里我测试生成的链接是百度的,你可以根据自己的需求调整为自己的。需要注意的是,生成的链接一定要带上http://https://表明这是链接,而不是一段文字

生成的二维码如下所示
在这里插入图片描述

手机扫码,正常跳转百度,测试通过

在这里插入图片描述

总结

至此,针对生成二维码的功能就结束了,通过它我们可以实现各种便捷的交互功能,更多的拓展,大家可以动手尝试

来源地址:https://blog.csdn.net/qq_24950043/article/details/131259497

--结束END--

本文标题: java:实现用户扫码二维码自动跳转指定链接功能

本文链接: https://lsjlt.com/news/397745.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作