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

java实现生成自定义二维码

增加依赖:

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

代码如下:

 /*** 生成包含字符串信息的二维码图片** @param outputStream 文件输出流路径* @param content      二维码携带信息* @param qrCodeSize   二维码图片大小* @param imageFormat  二维码的格式* @throws WriterException* @throws IOException*/public static boolean createQrCode(OutputStream outputStream, String content, int qrCodeSize, String imageFormat) throws WriterException, IOException {//设置二维码纠错级别MAPHashtable<EncodeHintType, ErrorCorrectionLevel> hintMap = new Hashtable<EncodeHintType, ErrorCorrectionLevel>();hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);  // 矫错级别QRCodeWriter qrCodeWriter = new QRCodeWriter();//创建比特矩阵(位矩阵)的QR码编码的字符串String contentCharset = new String(content.getBytes("UTF-8"), "ISO-8859-1");BitMatrix byteMatrix = qrCodeWriter.encode(contentCharset, BarcodeFormat.QR_CODE, qrCodeSize, qrCodeSize, hintMap);// 使BufferedImage勾画QRCode  (matrixWidth 是行二维码像素点)int matrixWidth = byteMatrix.getWidth();BufferedImage image = new BufferedImage(matrixWidth - 200, matrixWidth - 200, BufferedImage.TYPE_INT_RGB);image.createGraphics();Graphics2D graphics = (Graphics2D) image.getGraphics();graphics.setColor(Color.WHITE);graphics.fillRect(0, 0, matrixWidth, matrixWidth);// 使用比特矩阵画并保存图像graphics.setColor(Color.BLACK);for (int i = 0; i < matrixWidth; i++) {for (int j = 0; j < matrixWidth; j++) {if (byteMatrix.get(i, j)) {graphics.fillRect(i - 100, j - 100, 1, 1);}}}return ImageIO.write(image, imageFormat, outputStream);}

调用:

        String url=System.getProperty("user.dir")+"/Code.jpg";   //输出路径可自定义FileOutputStream fileOutputStream = new FileOutputStream(url);excelUtil.createQrCode(fileOutputStream, "12345", 900, "JPEG");

结果:

可扫描验证结果:12345

http://www.lryc.cn/news/611593.html

相关文章:

  • 软考信息安全工程师11月备考
  • Ragflow介绍与安装
  • 考研408_数据结构笔记(第四章 串)
  • Spearman 相关系数与 Pearson 相关系数的区别
  • Java 工具类的“活化石”:Apache Commons 核心用法、性能陷阱与现代替代方案
  • 湖南14个市州分流线得分率对比
  • 【科研绘图系列】R语言绘制瀑布图
  • RNN梯度爆炸/消失的杀手锏——LSTM与GRU
  • 自学嵌入式 day45 ARM体系架构
  • 异世界历险之数据结构世界(非递归快排,归并排序(递归,非递归))
  • Leetcode题解:739每日温度,用单调栈解决问题!
  • 分布式存储 Ceph 的演进经验 · SOSP 2019
  • 从零搭建React框架--第一章:create-react-app、antd、less
  • 深度解析|资源位管理工具如何重构媒体商业化效率?
  • 《算法导论》第 8 章—线性时间排序
  • 福彩双色球第2025090期篮球号码分析
  • 【STL源码剖析】从源码看 vector:底层扩容逻辑与内存复用机制
  • Python实现信号小波分解与重构
  • 飞算JavaAI开发平台:重构开发全流程——从需求到工程的智能化跃迁
  • 数据大集网:以数据为纽带,重构企业贷获客生态的助贷平台实践
  • React 表单处理:移动端输入场景下的卡顿问题与防抖优化方案
  • WebSocket 通信与 WebSocketpp 库使用指南
  • Baumer相机如何通过YoloV8深度学习模型实现农作物水稻病虫害的检测识别(C#代码UI界面版)
  • 深度学习-卷积神经网络CNN-多输入输出通道
  • 2025年大语言模型与多模态生成工具全景指南(V2.0)
  • 《动手学深度学习》读书笔记—9.3深度循环神经网络
  • MCU程序段的分类
  • 如何解决网页视频课程进度条禁止拖动?
  • Linux入门DAY18
  • MCU控制ADAU1701,用System Workbench for STM32导入工程