长沙市天心区建设局网站智联招聘网最新招聘官网下载

bicheng/2026/1/20 22:33:28/文章来源:
长沙市天心区建设局网站,智联招聘网最新招聘官网下载,进度圈wordpress,易企秀h5长页面制作前言#xff1a;在日常的开发工作当中可能需要实现一个二维码小功能#xff0c;我参考了网上很多关于SpringBoot生成二维码的教程#xff0c;最终还是自己封装了一套完整生成二维码的工具类#xff0c;可以支持基础的黑白二维码、带颜色的二维码、带Logo的二维码、带颜色和… 前言在日常的开发工作当中可能需要实现一个二维码小功能我参考了网上很多关于SpringBoot生成二维码的教程最终还是自己封装了一套完整生成二维码的工具类可以支持基础的黑白二维码、带颜色的二维码、带Logo的二维码、带颜色和Logo的二维码和解析二维码五大功能还可以生成具体的二维码文件或返回Base64都是博主自己手写封装好的这边免费开源给大家一键使用只求大家一个免费的三连支持 目录 一、问题记录 二、导入pom依赖 三、QRCodeUtil工具类完整代码 四、使用示例 五、Gitee源码 六、总结 一、问题记录 这边我使用的是zxing提供的jar包生成的二维码不过有1个问题博客目前暂时未解决如果有解决的方法希望可以在评论区交流一下问题如下 二维码的内容如果设置为中文会报com.google.zxing.NotFoundException的错误这个问题博主搜索了网上很多的信息也没有找到具体的解决方案。 二、导入pom依赖 dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- 二维码生成器依赖 --dependencygroupIdcom.google.zxing/groupIdartifactIdcore/artifactIdversion3.3.0/version/dependencydependencygroupIdcom.google.zxing/groupIdartifactIdjavase/artifactIdversion3.3.0/version/dependency!-- 常用工具类 --dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-lang3/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependencies 三、QRCodeUtil工具类完整代码 package com.example.ewm.utils;import java.awt.BasicStroke; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Shape; import java.awt.geom.RoundRectangle2D; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.OutputStream; import java.util.HashMap; import java.util.Hashtable; import java.util.Random; import javax.imageio.ImageIO;import com.google.zxing.*; import com.google.zxing.client.j2se.BufferedImageLuminanceSource; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.common.HybridBinarizer; import com.google.zxing.qrcode.QRCodeWriter; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component;/*** author HTT*/ Component public class QRCodeUtil {/*** 编码格式*/private static final String CHARSET utf-8;/*** 二维码后缀名*/private static final String FORMAT_NAME JPG;/*** 二维码尺寸*/private static final int QRCODE_SIZE 300;/*** 插入图宽度*/private static final int WIDTH 60;/*** 插入图高度*/private static final int HEIGHT 60;/*** 插入图片* param source 文件流* param imgPath 图片路径* param needCompress 是否压缩图片* throws Exception*/private void insertImage(BufferedImage source, String imgPath, boolean needCompress) throws Exception {File file new File(imgPath);if (!file.exists()) {throw new Exception(imgPath图片文件不存在);}Image src ImageIO.read(new File(imgPath));int width src.getWidth(null);int height src.getHeight(null);// 压缩LOGOif (needCompress) {if (width WIDTH) {width WIDTH;}if (height HEIGHT) {height HEIGHT;}Image image src.getScaledInstance(width, height, Image.SCALE_SMOOTH);BufferedImage tag new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);Graphics g tag.getGraphics();// 绘制缩小后的图g.drawImage(image, 0, 0, null);g.dispose();src image;}// 插入LOGOGraphics2D graph source.createGraphics();int x (QRCODE_SIZE - width) / 2;int y (QRCODE_SIZE - height) / 2;graph.drawImage(src, x, y, width, height, null);Shape shape new RoundRectangle2D.Float(x, y, width, width, 6, 6);graph.setStroke(new BasicStroke(3f));graph.draw(shape);graph.dispose();}/*** 创建带图片的二维码核心方法如果图片路径为空不会生成图片* param content 二维码内容* param imgPath 图片路径* param needCompress 是否压缩图片* return* throws Exception*/private BufferedImage createEwm(String content, String imgPath, boolean needCompress) throws Exception {Hashtable hints new Hashtable(16);hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);hints.put(EncodeHintType.CHARACTER_SET, CHARSET);hints.put(EncodeHintType.MARGIN, 1);BitMatrix bitMatrix new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, QRCODE_SIZE, QRCODE_SIZE,hints);int width bitMatrix.getWidth();int height bitMatrix.getHeight();BufferedImage image new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);for (int x 0; x width; x) {for (int y 0; y height; y) {image.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);}}if (StringUtils.isEmpty(imgPath)) {return image;}// 插入图片insertImage(image, imgPath, needCompress);return image;}/*** 创建自定义颜色和图片的二维码核心方法如果图片路径为空不会生成图片* param content 二维码内容* param imgPath 图片路径* param needCompress 是否压缩图片* param frontColor 前景色* param backgroundColor 背景色* return* throws Exception*/private BufferedImage createEwm(String content, String imgPath, boolean needCompress,int frontColor,int backgroundColor) throws Exception {Hashtable hints new Hashtable(16);hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);hints.put(EncodeHintType.CHARACTER_SET, CHARSET);hints.put(EncodeHintType.MARGIN, 1);BitMatrix bitMatrix new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, QRCODE_SIZE, QRCODE_SIZE,hints);int width bitMatrix.getWidth();int height bitMatrix.getHeight();BufferedImage image new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);for (int x 0; x width; x) {for (int y 0; y height; y) {image.setRGB(x, y, bitMatrix.get(x, y) ? frontColor : backgroundColor);}}if (StringUtils.isEmpty(imgPath)) {return image;}// 插入图片insertImage(image, imgPath, needCompress);return image;}/*** 生成带图片的二维码保存为文件如果图片路径为空不会生成图片* param content 二维码内容* param imgPath 图片路径* param destPath 存放路径* param needCompress 是否压缩图片* throws Exception*/private void generate(String content, String imgPath, String destPath, boolean needCompress) throws Exception {BufferedImage image createEwm(content, imgPath, needCompress);mkdirs(destPath);ImageIO.write(image, FORMAT_NAME, new File(destPath));}/*** 创建自定义颜色和图片的二维码保存为文件如果图片路径为空不会生成图片* param content 二维码内容* param imgPath 图片路径路径为空则只生成基础的二维码* param destPath 存放路径* param needCompress 是否压缩图片* param frontColor 前景色* param backgroundColor 背景色* 例举一些16进制的颜色代码* 0x000000 黑* 0xff0000 亮红* 0x00ff00 亮绿* 0xffff00 亮黄* 0x0000ff 亮蓝* 0xff00ff 亮紫* 0x00ffff 亮浅蓝* 0xffffff 白* 0xc6c6c6 亮灰* 0x848484 暗灰* throws Exception*/private void generate(String content, String imgPath, String destPath, boolean needCompress,int frontColor,int backgroundColor) throws Exception {BufferedImage image createEwm(content, imgPath, needCompress,frontColor,backgroundColor);mkdirs(destPath);ImageIO.write(image, FORMAT_NAME, new File(destPath));}/*** 生成带有图片的二维码并返回Base64如果图片路径为空不会生成图片* param content 二维码内容* param imgPath 图片路径* param needCompress 是否压缩图片* return* throws Exception*/private String generateBase64(String content, String imgPath, boolean needCompress) throws Exception {if (!StringUtils.isEmpty(content)) {HashMapEncodeHintType, Comparable hints new HashMap();hints.put(EncodeHintType.CHARACTER_SET, utf-8);hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);hints.put(EncodeHintType.MARGIN, 0);BufferedImage bufferedImage createEwm(content, imgPath, needCompress);ByteArrayOutputStream os new ByteArrayOutputStream();ImageIO.write(bufferedImage, FORMAT_NAME, os);String base64 Base64.encode(os.toByteArray());os.flush();os.close();return data:image/png;base64, base64;}return ;}/*** 生成带有自定义颜色和图片的二维码并返回Base64如果图片路径为空不会生成图片* param content 二维码内容* param imgPath 图片路径* param needCompress 是否压缩图片* param frontColor 前景色* param backgroundColor 背景色* return* throws Exception*/private String generateBase64(String content, String imgPath, boolean needCompress,int frontColor,int backgroundColor) throws Exception {if (!StringUtils.isEmpty(content)) {HashMapEncodeHintType, Comparable hints new HashMap();hints.put(EncodeHintType.CHARACTER_SET, utf-8);hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);hints.put(EncodeHintType.MARGIN, 0);BufferedImage bufferedImage createEwm(content, imgPath, needCompress,frontColor,backgroundColor);ByteArrayOutputStream os new ByteArrayOutputStream();ImageIO.write(bufferedImage, FORMAT_NAME, os);String base64 Base64.encode(os.toByteArray());os.flush();os.close();return data:image/png;base64, base64;}return ;}/*** 创建多级目录* param destPath*/private void mkdirs(String destPath) {File file new File(destPath);if (!file.exists() !file.isDirectory()) {file.mkdirs();}}/*** 根据文件解析二维码* param file* return* throws Exception*/private String analysis(File file) throws Exception {BufferedImage image;image ImageIO.read(file);if (image null) {return null;}BufferedImageLuminanceSource source new BufferedImageLuminanceSource(image);BinaryBitmap bitmap new BinaryBitmap(new HybridBinarizer(source));HashMap hints new HashMapDecodeHintType, Object();hints.put(DecodeHintType.CHARACTER_SET, CHARSET);Result result new MultiFormatReader().decode(bitmap, hints);String resultStr result.getText();return resultStr;}/*******************************************************以下是创建二维码提供的方法封装*******************************************************//******************************另存为文件版本******************************//*** 创建基础的二维码* param content 二维码内容* param destPath 存放路径* throws Exception*/public void create(String content, String destPath) throws Exception {generate(content, null, destPath, false);}/*** 创建带颜色基础的二维码* param content 二维码内容* param destPath 存放路径* throws Exception*/public void create(String content, String destPath,int frontColor,int backgroundColor) throws Exception {generate(content, null, destPath, false,frontColor,backgroundColor);}/*** 创建带图片的二维码* param content 二维码内容* param imgPath 图片路径* param destPath 存放路径* param needCompress 是否压缩图片* throws Exception*/public void create(String content, String imgPath, String destPath,boolean needCompress) throws Exception {generate(content, imgPath, destPath, needCompress);}/*** 创建带有自定义颜色和图片的二维码* param content 二维码内容* param imgPath 图片路径* param destPath 存放路径* param needCompress 是否压缩图片* param frontColor 前景色* param backgroundColor 背景色* throws Exception*/public void create(String content, String imgPath, String destPath,boolean needCompress,int frontColor,int backgroundColor) throws Exception {generate(content, imgPath, destPath, needCompress,frontColor,backgroundColor);}/******************************另存为文件版本******************************//******************************Base64版本******************************//*** 创建基础的二维码并返回Base64* param content* throws Exception*/public String create(String content) throws Exception {return generateBase64(content,null,false);}/*** 创建带颜色基础的二维码并返回Base64* param content* throws Exception*/public String create(String content,int frontColor,int backgroundColor) throws Exception {return generateBase64(content,null,false,frontColor,backgroundColor);}/*** 创建带图片的二维码并返回Base64* param content 二维码内容* param imgPath 图片路径* param needCompress 是否压缩图片* throws Exception*/public String create(String content, String imgPath,boolean needCompress) throws Exception {return generateBase64(content, imgPath, needCompress);}/*** 创建带有自定义颜色和图片的二维码并返回Base64* param content 二维码内容* param imgPath 图片路径* param needCompress 是否压缩图片* param frontColor 前景色* param backgroundColor 背景色* throws Exception*/public String create(String content, String imgPath,boolean needCompress,int frontColor,int backgroundColor) throws Exception {return generateBase64(content, imgPath, needCompress,frontColor,backgroundColor);}/******************************Base64版本******************************//*** 根据文件路径解析二维码* param path 文件路径* return* throws Exception*/public String decode(String path) throws Exception {File file new File(path);if(!file.exists()){throw new Exception(文件不存在);}return analysis(file);}} 四、使用示例 友情提醒代码中的布尔值是代表Logo图片是否需要被压缩如果是true说明嵌入的Logo图片需要被压缩我的建议是默认为true因为如果不压缩在使用decode解析带Logo的二维码的时候会报com.google.zxing.NotFoundException的错误博主亲自测试过。 单元测试 SpringBootTest class EwmApplicationTests {Resourceprivate QRCodeUtil qrCodeUtil;Testvoid contextLoads() throws Exception {qrCodeUtil.create(httstudy,F:\\基础二维码.jpg);qrCodeUtil.create(httstudy,F:\\带颜色的二维码.jpg,0xff0000,0xffff00);qrCodeUtil.create(httstudy,F:\\Logo.png,F:\\带logo的二维码.jpg,true);qrCodeUtil.create(httstudy,F:\\Logo.png,F:\\带颜色和logo的二维码.jpg,true,0xff0000,0xffff00);String str qrCodeUtil.create(httstudy);String str2 qrCodeUtil.create(httstudy,0xff0000,0xffff00);String str3 qrCodeUtil.create(httstudy,F:\\Logo.png,true);String str4 qrCodeUtil.create(httstudy,F:\\Logo.png,true,0xff0000,0xffff00);System.out.println(str);System.out.println(str2);System.out.println(str3);System.out.println(str4);String result qrCodeUtil.decode(F:\\基础二维码.jpg);String result2 qrCodeUtil.decode(F:\\带颜色的二维码.jpg);String result3 qrCodeUtil.decode(F:\\带logo的二维码.jpg);String result4 qrCodeUtil.decode(F:\\带颜色和logo的二维码.jpg);System.out.println(result);System.out.println(result2);System.out.println(result3);System.out.println(result4);}} 运行结果 五、Gitee源码 码云地址SpringBoot生成二维码完整工具类分享 六、总结 良心博主原创封装不易把常见场景需要用到的二维码类型都给大家封装好了只要像单元测试那样一键生成就好了如有问题欢迎评论区留言

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/88373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二手车做网站的目的北京赛车网站开发河南

运输层是OSI模型中的第四层,主要负责提供端到端的通信服务,包括错误检测、纠错、流量控制和拥塞控制等。以下是一些与运输层相关的常见协议: TCP(Transmission Control Protocol): 描述:TCP是一…

怎么看一个网站是html5外贸人自己搭建外贸网站wordpress

基本思想: 希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成个组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取,重复上述…

512内存服务器做网站中企动力是国企还是私企

数据表介绍 --1.学生表 Student(SId,Sname,Sage,Ssex) --SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course(CId,Cname,TId) --CId 课程编号,Cname 课程名称,TId 教师编号 --3.教师表 Teacher(TId,Tname) --TId 教师编号,Tname 教师姓名 --4.成绩…

中英双语网站模板竞价推广公司

题目不长,就是分析时间太久了。 思路使用dfs深度遍历,先想好这个函数返回什么,题目给出路径可以是子-父-子的路径,那么1-2-3可以,3-2-1也可以,那么考虑dfs返回两个值,对于当前节点node来说&…

ps怎么做网站首页和超链接go pricing wordpress

工作原理如下:ST是WTQ-288型电接点压力式温度计,当恒温箱内的温度降低到下限时,ST的指针与下限接点接触,双向可控硅通过R被强制触发导通,接通加热器RL的电源,于是恒温箱内温度上升。ST的指针转动&#xff0…

网站模版开发常德农科院网站

经典类与新式类经典类:P 或 P()--深度查找,向上查父节点新式类 :P(object)---广度查找,继承object,新式类的方法较多转载于:https://www.cnblogs.com/zyy98877/p/8574983.html

中山做网站的公司哪家好凡客资源

来源:亿欧【本文三大核心点】一、未来老龄化社会的到来与新生代快节奏生活工作的方式让智能机器人处于长期刚性需求。二、人工智能算法、软体材料、5G互联网开放软件平台、多机与人机协作、云服务租赁共享模式等技术给新一代机器人发展带来了大量的产业机遇。三、中…

帝国cms官方网站wordpress怎么优化精简

目录 1. 系统前端优化 2. 应用层优化 3. 负载均衡 4. 业务层优化 5. 数据库优化 6. 缓存策略 7. 后端优化 8. 安全防护 9. 系统监控和预警 秒杀系统设计需要考虑高并发、高可用、低延迟等因素,以下是一些常见的设计方案: 1. 系统前端优化 静态…

东莞网站推广方案江苏省建设类高工申报网站

由于GitHub项目仅翻译到前5章,我们从第6章开始通过大语言模型翻译,并导出markdown格式。 大模型难免存在错漏,请读者指正。 教材原文地址:https://www.cis.upenn.edu/~aaroth/Papers/privacybook.pdf 9 差分隐私与计算复杂度 到目…

黄村专业网站建设公司磐安做网站

RPA中国基于在科技行业的资源积累,以及对各领域「技术领导者」、「技术应用者」、「产品服务商」的深度调研,2023年,我们重点推出MI报告 ( Market Insight )、CI Vendor报告(Comprehensive Influence Vendor)两个系列。…

网站前台登陆页面怎么改黑白灰网站

break 语句用于跳出循环。 continue 用于跳过循环中的一个迭代。 Break 语句 我们已经在本教程之前的章节中见到过 break 语句。它用于跳出 switch() 语句。 break 语句可用于跳出循环。 continue 语句跳出循环后,会继续执行该循环之后的代码(如果有的话…

在地税网站怎么做税种认定直链平台

简介 Django是一个主流的Python Web框架,用于快速开发 Web 应用程序。功能强大,Python Web应用开发的第一选择。 特点 ORM(对象关系映射): Django 提供了一个强大的 ORM,允许开发者通过 Python 代码来定义…

学校网站首页设计公司宣传页面设计

ATFX汇市:今日20:30,美国劳工部将公布2月未季调核心CPI年率数据,前值为3.9%,预期值3.7%,预期将下降0.2个百分点。历史数据看,美国核心CPI年率处于快速下降状态,去年3月份数据仍高达5.6%&#xf…

网站 可以做无形资产吗搜索引擎排名优化程序

系列文章目录 【AIGC】服务于人类|一种新的人工智能技术-CSDN博客 文章目录 目录 系列文章目录 文章目录 前言 一、天意云网站 ​编辑 二、使用步骤 可以看到有云服务器、Rstudio以及我们的ChatGPT,我这次主要分享ChatGPT,其他的有机会我再给…

做拍福利爱福利视频网站中国设计之家官网

目录 Task 1: Eliminate allocation from sbrk()Task 2: Lazy allocationTask 3: Lazytests and Usertests 在学习了 page fault 这一节课后,了解了操作系统是如何结合 page table 和 trap 利用 page fault 来实现一系列的神奇的功能。这个 lab 就是在 XV6 中实现 l…

建设银行内部网站6安蓉建设总公司网站

DEM模块配置详解 - 上 一、Autosar中DEM模块简介1.DEM对其他模块的依赖2.DEM模块架构2.1 DEM模块Dem Satellite(s) 和Master2.2 诊断事件处理2.2.1 基于计数器的算法2.2.2 基于时间的算法三、配置错误项处理3.1 容器DemEventParameter3.2 容器DemOperationCycleRef3.3 容器DemO…

可以跟关键词密度过高的网站交换友情链接吗下列哪种是网页制作工具

结束昨日435期JSTO“探索学习的新视界:硬核工具分享”,有伙伴分享的提升效率的AI工具,也有自我发现团队问题解决的工具,伙伴们都在各自的领域实践、吸收、反馈、复盘。这次的团队学习不仅是知识的传递,更是一场脑力激荡…

沧州网站推广汕头百度快速优化排名

上次讲了常用的接口:C初阶:初识STL、String类接口详细讲解(万字解析) 今天就来进行模拟实现啦 文章目录 1.基本结构与文件规划2.构造函数(constructor)2.1构造函数2.1.1无参有参分开2.1.2利用缺省参数合起来 2.2拷贝构…

ctf wordpressseo是啥

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 先决条件 本教程假设您已经在Debian 7或类似的Linux发行版(如Ubuntu)上设置了您的droplet(VPS&#…

不要钱做网站软件python网站建设

前言 本文接上一篇文章《斯坦福机器人Mobile ALOHA的关键技术:动作分块ACT的算法原理与代码剖析》而来,当然最开始本文是作为上一篇文章的第二、第三部分的 但因为ACT太过关键,除了在上一篇文章中写清楚其算法原理之外,还得再剖…