首页 > 数据库 >Java中生成二维码转为base64存入MySQL数据库中

Java中生成二维码转为base64存入MySQL数据库中

时间:2024-05-26 23:12:47浏览次数:30  
标签:google Java java base64 zxing MySQL import com

1.引入架包

<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>core</artifactId>
    <version>3.4.1</version>
</dependency>
<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>javase</artifactId>
    <version>3.4.1</version>
</dependency>

2.Java实体类中增加字段

    @ApiModelProperty(value = "二维码")
    private String qrCode;

3.MySQL表中增加字段,类型为blob

alter table `tableName` 
add column `qr_code` blob null comment '二维码' ;

4.生成工具类

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Base64;
import java.util.Hashtable;

public class QRCodeUtil {
    public static String generateQRCodeToBase64(String text, int width, int height) throws WriterException, IOException {
        com.google.zxing.Writer writer = new QRCodeWriter();
        Hashtable<EncodeHintType, Object> hints = new Hashtable<>();
        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);

        BitMatrix bitMatrix = writer.encode(text, BarcodeFormat.QR_CODE, width, height, hints);
        BufferedImage image = MatrixToImageWriter.toBufferedImage(bitMatrix);

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ImageIO.write(image, "png", baos);
        baos.flush();
        byte[] imageBytes = baos.toByteArray();
        baos.close();

        return Base64.getEncoder().encodeToString(imageBytes);
    }

    // 将Base64字符串解码为二维码图片的方法(可选)
    public static BufferedImage decodeBase64ToQRCodeImage(String base64String) throws IOException {
        byte[] imageBytes = Base64.getDecoder().decode(base64String);
        return ImageIO.read(new ByteArrayInputStream(imageBytes));
    }

    /**
     * https://blog.csdn.net/qq_60542647/article/details/138083115   二维码转base64
     * https://www.lddgo.net/convert/base64-to-image   base64 在线Base64转图片
     * @param args
     */
    public static void main(String[] args) {
        try {
            String base64 = generateQRCodeToBase64("www.baidu.com", 200, 200);
            System.out.println(base64);
        } catch (WriterException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

 

标签:google,Java,java,base64,zxing,MySQL,import,com
From: https://www.cnblogs.com/Jack-zhao/p/18214503

相关文章

  • MySQL造数据占用临时表空间
    在数据库性能测试和开发过程中,常常需要生成大量的测试数据以模拟真实环境。在MySQL中,造数据的过程可能会占用大量的临时表空间,这可能会影响数据库的性能和稳定性。本文将深入探讨MySQL造数据时临时表空间的使用情况,并通过多个代码示例演示如何管理和优化临时表空间的使用。什......
  • MySQL设置表自增步长
    在MySQL数据库管理中,自增字段(AUTO_INCREMENT)是一种常见且重要的功能,通常用于生成唯一的标识符(如主键)。然而,在多种应用场景下,默认的自增步长(1)可能无法满足需求。例如,在分布式系统中,多个实例可能需要不同的自增步长以避免冲突。本文将深入探讨MySQL中如何设置表自增步长,详细介绍......
  • Mysql数据库-数据模型
    1.关系型数据库(RDBMS)概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。二维表:指的是由行和列组成的表,如下图(就类似于Excel表格数据,有表头、有列、有行,还可以通过一列关联另外一个表格中的某一列数据)。MySQL、Oracle、DB2、SQLServer等都是属于关系型数据库,......
  • 零基础学Java第二十三天之网络编程
    网络编程1.网络编程实现多台计算机之间实现数据的共享和传递,网络应用程序主要组成为:网络编程+IO流+多线程2.网络编程三要素网络通讯的模型:请求-响应,客户端-服务端三要素:IP地址,端口,协议(数据传输的规则)2.1.IP地址IP地址:网络中计算机的唯一标识(IP地址是一个32位的二......
  • 零基础学Java第二十三天之网络编程Ⅱ
    1.InetAddress类用来表示主机的信息练习:C:\Windows\system32\drivers\etc\hosts一个主机可以放多个个人网站www.baidu.com/14.215.177.37www.baidu.com/14.215.177.38www.taobao.com/183.61.241.252www.taobao.com/121.14.89.2532.Socket3.TCP编程API:Socket,S......
  • 分析JAVA打印流的自动刷新
    参考:https://blog.csdn.net/xshsjl/article/details/77076235参考:https://blog.csdn.net/weixin_43369921/article/details/111397253今天遇到了一个奇怪的事情,使用打印流,有一个自动刷新的参数,但设不设置结果貌似没啥影响,下面来研究研究publicPrintStream(OutputStreamout,......
  • MySql基础(一)--最详细基础入门,看完就懂啦(辛苦整理,想要宝宝的赞和关注嘻嘻)
    前言希望你向太阳一样,有起有落,不失光彩~一、数据库概述1.什么是数据库数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。 2.数据库管理系统数据库管理系统(DataBaseManagermen......
  • mysql数据库监控跟踪方案
    方案一canal+kafka  QuickStart·alibaba/canalWiki(github.com)1.自定义处理程序,完全自定义开发,适配各种需求2.只支持增删改操作监控方案二通过软件NeorProfileSQLhttp://www.profilesql.com/files/download/sqlprofiler-4.1.1.exe1.可以监控所有执行的sql语......
  • SpringBoot+MySQL的简单运用(Hello World API)
    一、创建springboot项目1.生成springboot首先打开自动生成springboot项目的在线网站:https://start.spring.io/如下图所示:2.依赖配置在上述页面中,左边默认就好,不用操作,右边添加依赖,点击下图中所示红色区域在弹出的栏目中依次搜索SpringWeb,SpringDataJPA,MySQLDr......
  • [AIGC] flink sql 消费kafka消息,然后写到mysql中的demo
    这是一个使用FlinkSQL从Kafka中消费数据并写入MySQL的示例。在这个示例中,我们将假设有一个Kafka主题“input_topic”,它产生格式为(user_id:int,item_id:int,behavior:string,timestamp:long)的数据,我们需要把这些数据写入名为"output_table"的MySQL表......