当前位置: 首页 > news >正文

利用Qrcode生成二维码

为什么80%的码农都做不了架构师?>>>   hot3.png

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("二维码生成失败!");
    }
}

转载于:https://my.oschina.net/llsydn/blog/3013843

相关文章:

  • Java到底能干嘛?
  • 【Linux】- SSH免密登陆配置
  • 企业 SpringBoot+SpringCloud(九)springboot整合Redis
  • 一文看透浏览器架构
  • 智能媒体管理(IMM)视频分析中明星识别介绍
  • 云大使推广中的常见热门问题
  • mysql5.6备份mysqldump提示错误
  • Canal 源码走读
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • HTTP 简介
  • 学习正则表达式
  • Go test 命令工作原理
  • 监控Linux系统状态、手动增加swap空间
  • React16时代,该用什么姿势写 React ?
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【刷算法】从上往下打印二叉树
  • css的样式优先级
  • Javascript基础之Array数组API
  • Just for fun——迅速写完快速排序
  • python大佬养成计划----difflib模块
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 搭建gitbook 和 访问权限认证
  • 分类模型——Logistics Regression
  • 复习Javascript专题(四):js中的深浅拷贝
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 汉诺塔算法
  • 后端_ThinkPHP5
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 理清楚Vue的结构
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 算法之不定期更新(一)(2018-04-12)
  • 我从编程教室毕业
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • 正则表达式-基础知识Review
  • #etcd#安装时出错
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #vue3 实现前端下载excel文件模板功能
  • #每天一道面试题# 什么是MySQL的回表查询
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (六)c52学习之旅-独立按键
  • (生成器)yield与(迭代器)generator
  • (十)c52学习之旅-定时器实验
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (四)Linux Shell编程——输入输出重定向
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)shell中括号的特殊用法 linux if多条件判断
  • .equals()到底是什么意思?
  • .net framework profiles /.net framework 配置
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET Framework与.NET Framework SDK有什么不同?
  • .net MVC中使用angularJs刷新页面数据列表