【支付系统】java springboot 生成二维码,二维码中文乱码

这篇具有很好参考价值的文章主要介绍了【支付系统】java springboot 生成二维码,二维码中文乱码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        支付系统必不可少的就是生成二维码,有时我们会需要将支付链接转换为二维码.用户通过移动设备扫描二维码调起支付. 该篇文章主要使用的是hutool自带的二维码生成功能.

 1. 引入依赖(hutool 可以按需引入这里就直接使用all了)

        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>core</artifactId>
            <version>3.5.0</version>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.19</version>
        </dependency>

2. hutool的官方已经有很详细的生成方式,可以满足大部分的要求,如下

// 生成指定url对应的二维码到文件,宽和高都是300像素
QrCodeUtil.generate("https://hutool.cn/", 300, 300, FileUtil.file("d:/qrcode.jpg"));

3. 在二维码上添加文字和图片,有时我们会需要在二维码上添加一些logo或者提醒文字,这就需要我们引入字体和图片.因为项目一般都是部署在linux系统,以centos为例,centos本身是不包含中文字体,所以在本地开发时是可以正常显示字体,生成环境全变成了乱码.

  •        创建字体和图片对象(字体文件可以在网上或者window计算机中获取),这里有个坑,可以查看我另一篇文章解决Java 自定义字体产生大量+~JF***.tmp文件导致硬盘爆满
	private static final String FONT_PATH = "simhei.ttf";	
    
    private static Font font;

	private static BufferedImage read;

	static {
		ClassPathResource resource = new ClassPathResource("logo_small.png");
		try (InputStream inputStream = resource.getInputStream()) {
			font = Font.createFont(Font.TRUETYPE_FONT, new File(FONT_PATH)).deriveFont(20F);
			read = ImgUtil.read(inputStream);
		} catch (FontFormatException | IOException e) {
			log.error("获取字体文件失败", e);
		}
	}
  •  生成二维码
	private static String createQRCode(String url) {
        // generateFilePath为自定义方法,用于生成二维码存放路径,和二维码线上访问地址
        // 主要根据业务编写自己的方法
        Dict dict = FileUtils.generateFilePath(FileDirectoryEnum.QRCODE, "jpg");
		String imgUrl = dict.getStr("url");
		String path = dict.getStr("path");
        // 生成二维码,
        //参数1 转换为二维码的内容
        //参数2 添加二维码中间的小图
        //参数3 二维码存放位置
		File code = QrCodeUtil.generate(
				url,
				QrConfig.create().setImg(read),
				FileUtil.file(path)
		);
        // 在图片上添加文字,Imgutil为hutool的工具类
		ImgUtil.pressText(
				code,
				code,
				"谨防被骗", Color.RED,
				font,
				0,
				-60,
				1f
		);

		return imgUrl;
	}

上述代码使用了hutool的ImgUtil工具类,参数含义如下

【支付系统】java springboot 生成二维码,二维码中文乱码

 完整代码

	private static final String FONT_PATH = "simhei.ttf";	
	
    private static Font font;

	private static BufferedImage read;

	static {
		ClassPathResource resource = new ClassPathResource("logo_small.png");
		try (InputStream inputStream = resource.getInputStream()) {
			font = Font.createFont(Font.TRUETYPE_FONT, new File(FONT_PATH)).deriveFont(20F);
			read = ImgUtil.read(inputStream);
		} catch (FontFormatException | IOException e) {
			log.error("获取字体文件失败", e);
		}
	}

	private static String createQRCode(String url) {
		Dict dict = FileUtils.generateFilePath(FileDirectoryEnum.QRCODE, "jpg");
		String imgUrl = dict.getStr("url");
		String path = dict.getStr("path");
		File code = QrCodeUtil.generate(
				url,
				QrConfig.create().setImg(read),
				FileUtil.file(path)
		);
		ImgUtil.pressText(
				code,
				code,
				"谨防被骗", Color.RED,
				font,
				0,
				-60,
				1f
		);

		return imgUrl;
	}

 调用方式文章来源地址https://www.toymoban.com/news/detail-507022.html

createQRCode("https://blog.csdn.net/qq_39078783");

到了这里,关于【支付系统】java springboot 生成二维码,二维码中文乱码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3-pc端生成微信二维码、扫码支付监听支付回调(WebSocket)功能实现

    项目场景:后台系统中采购订单列表需要支持微信扫描支付功能,支付成功需要返回到订单列表。 调用接口接收后端返回数据, npm install qrcode --save 安装插件,处理返回数据生成二维码。 1. 后端接口返回数据如下: 2. 前端代码如下: 3. 效果图如下: 生成二维码功能到这就完

    2024年02月12日
    浏览(49)
  • SpringBoot使用Zxing生成二维码

    ZXing,一个支持在图像中解码和生成条形码(如二维码、PDF 417、EAN、UPC、Aztec、Data Matrix、Codabar)的库。ZXing(“zebra crossing”)是一个开源的、多格式的、用Java实现的一维/二维条码图像处理库,具有到其他语言的端口。 对于在Spring项目中使用Zxing生成二维码,其实比较简单,只需

    2024年04月14日
    浏览(84)
  • java实现二维码生成功能

    由于现在对二维码的使用比较多,正好我在项目里面也使用到了,所以写篇博客记录一下。 这里我是将我博客主页的url生成二维码,微信扫一扫可以看到我的博客主页(欢迎骚扰) 4.1、设置参数 上面这个只是简单的生成二维码,接下来说说自定义参数的方式生成,如长、宽

    2024年02月11日
    浏览(47)
  • java生成、识别条形码和二维码

    使用 zxing 开源库 Zxing主要是Google出品的,用于识别一维码和二维码的第三方库 主要类: BitMatrix 位图矩阵 MultiFormatWriter 位图编写器 MatrixToImageWriter 写入图片 可以生成、识别条形码和二维码 内置三种尺寸: enum Size {SMALL, MIDDLE, BIG} 依赖 将宽度不等的多个黑条和白条,按照一定

    2024年02月08日
    浏览(50)
  • Java便捷生成二维码并使用Excel

    第一步生成图片字节数组输出流 第二步字节数组输出流存入excel 使用的是easyexcel和hutool工具便捷快速开发 导出类信息 @ContentRowHeight(100) @ColumnWidth(100/6) 这两个注解是条件excel行列大小,可以自行调整 EasyExcel 会根据这个实体类来生成表格,可以去官网查看注解注释掉其中的某

    2024年02月09日
    浏览(38)
  • Java生成二维码的两种方法

    本文介绍Java生成二维码的两种方法,这两种方法都依赖于google提供的二维码依赖包。 一种是自己写工具类,代码可以网上抄。 另一种是使用hutool第三方工具类的依赖包,不用自己抄代码。 自定义工具包就是借助google生成二维码的依赖包,然后自己写工具类。 工具类 测试代

    2024年02月06日
    浏览(52)
  • Java生成二维码(前后端分离项目实战)

    📍 本文代码已放置 github:Mr-Write/SpringbootDemo: 各种demo案例 (github.com) ZXing(Zebra Crossing)是一个开源的条码扫描和生成库,用于读取和生成各种类型的条码和二维码。它由 Google 开发并发布,目前由一群开源社区维护。 ZXing 支持多种常见的条码格式,包括一维条码(如EAN-13、

    2024年02月10日
    浏览(59)
  • Java生成二维码——附Utils工具类

    参加2023年的计算机设计大赛国赛,拿到了一等奖。 现在将项目中的工具类代码剥离出来,方便之后项目开发中复用。

    2024年02月15日
    浏览(42)
  • Java生成二维码的几种实现方式

    本文将基于Spring Boot介绍两种生成二维码的实现方式,一种是基于Google开发工具包,另一种是基于Hutool来实现; 下面我们将基于Spring Boot,并采用两种方式实现二维码的生成,对于每一种方式还提供两种类型的二维码返回形式,即:物理文件 和 图片响应流 一、基于Google开发

    2024年02月17日
    浏览(42)
  • 西米支付:支付二维码的简单介绍

    二维码支付从1.0到3.0时代的历史进程 实际上二维码技术被推出来已经有十多年了,这段悠久绵长的英雄无用武之地的时代属于二维码1.0时代,得益于互联网电子商务的飞速发展首先将二维码应用于支付并发扬光大的是两个第三方支付公司,支付宝微信,这种新型的支付方式支

    2024年02月01日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包