二维码实现

二维码

首先就是导入一个包
zxing包;去maven官网下载
我们将二维码分为两个步骤来实现

spring boot的依赖
<!-- 二维码支持包 -->
<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>core</artifactId>
    <version>3.3.0</version>
</dependency>

<dependency>
    <groupId>net.glxn</groupId>
    <artifactId>qrgen</artifactId>
    <version>1.4</version>
</dependency>

第一步

生成二维码图像

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.Map;

import javax.imageio.ImageIO;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.Binarizer;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.DecodeHintType;
import com.google.zxing.EncodeHintType;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;

public class ZXingUtil {
	 /** 
     * 生成图像 
     */  
	public static void encode(String content, String filePath, String fileName, int width, int height) {
		try {
			String format = "png";// 图像类型
			Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
			hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
			BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);// 生成矩阵
			Path path = FileSystems.getDefault().getPath(filePath, fileName);
			MatrixToImageWriter.writeToPath(bitMatrix, format, path);// 输出图像
			System.out.println("输出成功.");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

    /** 
     * 解析图像 
     */  
	public static String decode(String filePath) {
		BufferedImage image;
		try {
			image = ImageIO.read(new File(filePath));
			LuminanceSource source = new BufferedImageLuminanceSource(image);
			Binarizer binarizer = new HybridBinarizer(source);
			BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);
			Map<DecodeHintType, Object> hints = new HashMap<DecodeHintType, Object>();
			hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
			Result result = new MultiFormatReader().decode(binaryBitmap, hints);// 对图像进行解码
			return result.getText();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (NotFoundException e) {
			e.printStackTrace();
		}
		return null;
	}

}

第二部

对生成图像进行调用

import com.zhiyou100.util.ZXingUtil;

public class MainClass {

	//哈哈哈
	//打电话-----------tel://手机号 
	//发短信-----------sms://手机号
	//邮件-------------emall://邮箱号
	//
	public static void main(String[] args) {
		m2();
	}
	public static void m2() {
//要解析图片的路径
		String string = ZXingUtil.decode("D:/image/3.jpg");
		System.out.println(string);
	}
	//二维码生成
	public static void m1() {
//第一个是 要输出的信息 第二个是生成图片的路径 第三个是图片的名字 第//四个是 宽度 第五个是高度
		ZXingUtil.encode("tel://13739655795", "D:/image/", "2.png", 200, 200);
		
	}
}

以上就是简单的二维码生成。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现Java二维码实现页面跳转,可以按照以下步骤进行操作: 1. 引入依赖:在项目的pom.xml文件中添加以下依赖,以使用Google的ZXing库来生成二维码: ```xml <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>com.google.zxing</groupId> <artifactId>javase</artifactId> <version>3.1.0</version> </dependency> ``` 2. 创建API:创建一个API,用于生成二维码图片。这个API的地址可以根据需要自定义,生成的二维码图片可以保存在服务器上或直接返回给用户。 3. 创建二维码链接信息:根据需要,创建一个包含要跳转的网址信息的二维码链接。例如,可以创建一个包含安卓跳转到baidu.com,iOS跳转到taobao.com的二维码链接。 4. 后端系统判断扫码系统:在后端系统中,可以使用User-Agent头信息来判断用户的操作系统。根据不同的操作系统,进行相应的跳转操作。例如,可以使用以下代码来判断用户的操作系统: ```java public static String getOsName(HttpServletRequest request) { String browserDetails = request.getHeader("User-Agent"); String userAgent = browserDetails; String os = ""; if (userAgent.toLowerCase().indexOf("windows") >= 0) { os = "Windows"; } else if (userAgent.toLowerCase().indexOf("mac") >= 0) { os = "Mac"; } else if (userAgent.toLowerCase().indexOf("x11") >= 0) { os = "Unix"; } else if (userAgent.toLowerCase().indexOf("android") >= 0) { os = "Android"; } else if (userAgent.toLowerCase().indexOf("iphone") >= 0) { os = "IPhone"; } else { os = "UnKnown, More-Info: " + userAgent; } return os; } ``` 通过以上步骤,你可以实现Java二维码实现页面跳转。 #### 引用[.reference_title] - *1* *3* [java生成二维码,跳转到指定页面](https://blog.csdn.net/w_t_y_y/article/details/114372077)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [java spring boot【二维码】根据扫码设备,跳转到相应页面,设计流程](https://blog.csdn.net/qq_37496750/article/details/130870128)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值