利用Qrcode生成二维码

简介: ``` import com.swetake.util.Qrcode; import javax.imageio.ImageIO; import java.awt.*; import java.awt
import com.swetake.util.Qrcode;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;

public static void GenerateQrCodeImg() {
    // 扫描二维码得到的内容
    String content = "201901171045";
    // 二维码保存的路径
    String imgPath = "d:/55.jpg";
    // 图片宽
    int width = 103;
    // 图片高
    int height = 103;
    // 实例化一个qrcode对象
    Qrcode qrcode = new Qrcode();
    // 设置纠错级别(级别有:L(7%) M(15%) Q(25%) H(30%) )
    qrcode.setQrcodeErrorCorrect('M');
    // 设置编码方式
    qrcode.setQrcodeEncodeMode('B');
    // 设置二维码版本(版本有 1-40个,)
    qrcode.setQrcodeVersion(4);
    // 开始绘制图片start
    // 1.设置图片大小(BufferedImage.TYPE_INT_RGB:利用三原色绘制二维码)
    BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    // 获取绘图工具start
    // 创建画笔
    Graphics2D gs = img.createGraphics();
    // 设置背景为白色
    gs.setBackground(Color.WHITE);
    // 设置一个矩形(四个参数分别为:开始绘图的x坐标,y坐标,图片宽,图片高)
    gs.clearRect(0, 0, width, height);
    // 设置二维码图片的颜色
    gs.setColor(Color.black);
    // 把内容转换字节数组
    byte[] bt = null;
    try {
    bt = content.getBytes("UTF-8");
    } catch (Exception e) {
    e.printStackTrace();
    }
    // 偏移量
    int py = 2;
    // 开始准备画图
    boolean[][] code = qrcode.calQrcode(bt);
    for (int i = 0; i < code.length; i++) {
        for (int j = 0; j < code.length; j++) {
            if (code[j][i]) {
                // 四个参数(画图的起始x和y位置,每个小模块的宽和高(二维码是有一个一个的小模块构成的));
                gs.fillRect(j * 3 + py, i * 3 + py, 3, 3);
            }
        }
    }
    // 画图
    try {
        ImageIO.write(img, "jpg", new File(imgPath));
        System.out.println("二维码生成成功!");
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println("二维码生成失败!");
    }
}
目录
相关文章
|
前端开发 JavaScript Java
Layui的入门级教学,基本使用及如何实现登入与注册页面
Layui的入门级教学,基本使用及如何实现登入与注册页面
636 0
|
10月前
|
机器学习/深度学习 人工智能 并行计算
Titans:谷歌新型神经记忆架构,突破 Transformer 长序列处理的瓶颈
Titans 是谷歌推出的新型神经网络架构,通过神经长期记忆模块突破 Transformer 在处理长序列数据时的瓶颈,支持并行计算,显著提升训练效率。
331 5
Titans:谷歌新型神经记忆架构,突破 Transformer 长序列处理的瓶颈
|
9月前
|
人工智能 搜索推荐
用满血版DeepSeek搭建自己的智能体
智能体是以云为基础、AI为核心的智能系统,可构建个性化健康饮食推荐助手。用户可基于DeepSeek-R1模型创建应用,定制专属饮食计划,涵盖个性化营养、疾病管理及过敏处理等场景。通过阿里云平台,用户能轻松完成从创建到发布的全流程,享受科学合理的饮食建议,帮助实现健康目标。应用链接:https://bailian.console.aliyun.com/share/089d8662e9ba4716af96a8ff03443cd3
|
编解码 供应链 搜索推荐
虚拟现实与教育:沉浸式学习的潜力
【10月更文挑战第2天】虚拟现实(VR)技术正在革新教育领域,通过沉浸式体验提升学习效果和兴趣。本文探讨了VR在教育中的应用潜力,特别是在历史、地理、自然科学和语言教育中的案例。虽然面临设备成本和技术支持等挑战,但随着技术进步和成本降低,VR有望成为教育的重要工具,带来更丰富的学习体验。
Vue3分页(Pagination)
这是一个高度可定制的分页组件,支持通过属性设置当前页数、每页条数、数据总数等,并提供了禁用分页、隐藏单页分页、快速跳转等功能。此外,还可以自定义分页的位置、显示的数据条数选项及数据总数的显示格式。组件内置了对多种场景的支持,如禁用状态下的分页操作、不同位置的分页显示等,适用于多种应用界面需求。在线预览展示了各种配置项的效果。
434 1
Vue3分页(Pagination)
Vue3头像(Avatar)
这是一个基于 Vue3 的头像组件库,提供了圆形和方形两种头像形状,并支持自定义大小、图片、图标及字符展示。
442 1
Vue3头像(Avatar)
|
SQL NoSQL Go
怎么用redigo操作redis?
本文介绍了使用Go语言的`redigo`库操作Redis数据库的方法。`redigo`支持Redis的所有命令,可通过`go get github.com/gomodule/redigo/redis`安装。文章详细讲解了如何建立Redis连接、执行基本的字符串操作(如设置与获取键值)、设置键值过期时间、判断键值是否存在等,并进一步演示了对Redis的数据结构如List、Set、Hash及ZSet的操作方法。此外,还提供了使用连接池以提升性能的示例。值得注意的是,`redigo`自身并不支持Redis集群功能,如需使用需引入额外的库。
222 1
|
开发框架 前端开发 JavaScript
前端框架Layui的使用讲解(Layui搭建登录注册页面)(一)
前端框架Layui的使用讲解(Layui搭建登录注册页面)
1057 0
|
SQL 存储 容灾
从中间件到分布式数据库,PolarDB-X的透明之路
PolarDB-X前身是淘宝内部使用的分库分表中间件TDDL(2007年,Java库的形态),早期以DRDS(2012年开始研发,2014年上线,分库分表中间件+MySQL Proxy的形态)的品牌在阿里云上提供服务,后来(2019年)正式转型为分布式数据库PolarDB-X(正式成为了PolarDB品牌的一员)。从中间件到分布式数据库,我们在以MySQL为存储构建分布式数据库这条路上走了10余年,这中间积累了大量的技术,也走了一些弯路,未来我们也会坚定的走下去。
|
域名解析 网络协议 Ubuntu
【域名解析DNS专栏】搭建私有DNS服务器:从BIND到CoreDNS的选择
【5月更文挑战第26天】本文对比了两种流行的DNS服务器软件BIND和CoreDNS。BIND以其稳定性及丰富功能著称,广泛兼容各类平台,适合复杂环境;CoreDNS则以其高性能、模块化设计和易用性脱颖而出。根据需求、资源和技术水平,用户可选择适合自己的DNS服务器。安装示例包括BIND在Ubuntu上的apt安装及基本配置,以及CoreDNS的snap安装和YAML配置。
1405 0

热门文章

最新文章