最近突然想写一些文章,所以就陆陆续续的编写一些自我感觉有用的并且大家也可能用到的一些技术代码。方便互相学习交流。

今天这篇文章,主要是利用Java实现二维码:
在写代码之前先讲一下整体思路,以方便更好更快捷的实现功能。
(1).首先要想实现二维码功能需要导入com.google.zxing的核心jar包,我这里导入的是core-3.2.1.jar;
(2).所谓二维码莫过于把需要的内容放入一张图片中,所以这里首先是创建一张带有参数内容的图片,方法如下:
private static BufferedImage createImage(String content, String imgPath, boolean needCompress) throws Exception {
Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
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 (imgPath == null || "".equals(imgPath)) {
return image;
}
// 插入图片
QRCodeUtil.insertImage(image, imgPath, needCompress);
return image;
}
//插入logo 如不需要logo可以执行此方法
private static void insertImage(BufferedImage source, String imgPath, boolean needCompress) throws Exception {
File file = new File(imgPath);
if (!file.exists()) {
System.err.println("" + imgPath + " 该文件不存在!");
return;
}
Image src = ImageIO.read(new File(imgPath));
int width = src.getWidth(null);
int height = src.getHeight(null);
if (needCompress) { // 压缩LOGO
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;
}
// 插入LOGO
Graphics2D 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();
}
(3).至此一张二维码图片生成方法就写完了,是不是很简单,接下来就是调用此方法。
/**
* 生成二维码(内嵌LOGO)
*
* @param content
* 内容
* @param imgPath
* LOGO地址
* @param destPath
* 存放目录
* @param needCompress
* 是否压缩LOGO
* @throws Exception
*/
public static void encode(String content, String imgPath, String destPath, boolean needCompress) throws Exception {
BufferedImage image = QRCodeUtil.createImage(content, imgPath, needCompress);
mkdirs(destPath);
String file = new Random().nextInt(99999999) + ".jpg";
ImageIO.write(image, FORMAT_NAME, new File(destPath + "/" + file));
}
/**
* 当文件夹不存在时,mkdirs会自动创建多层目录,区别于mkdir.(mkdir如果父目录不存在则会抛出异常)
*
* @author LongJin
* @date 2013-12-11 上午10:16:36
* @param destPath
* 存放目录
*/
public static void mkdirs(String destPath) {
File file = new File(destPath);
// 当文件夹不存在时,mkdirs会自动创建多层目录,区别于mkdir.(mkdir如果父目录不存在则会抛出异常)
if (!file.exists() && !file.isDirectory()) {
file.mkdirs();
}
}
(4).如果不要logo只要在调用时将logo的路径传为null就好。
(5).至此一个二维码生成工具就完成了,当然有人可能需要解析二维码,所以这里就把二维码解析方法也写出,同时也方便我日后查看。
/**
* 解析二维码
*
* @param file
* 二维码图片
* @return
* @throws Exception
*/
public static String decode(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));
Result result;
Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();
hints.put(DecodeHintType.CHARACTER_SET, CHARSET);
result = new MultiFormatReader().decode(bitmap, hints);
String resultStr = result.getText();
return resultStr;
}
以上所述是小编给大家介绍的Java实现二维码功能的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# java二维码功能
# 利用java生成二维码工具类示例代码
# 基于google zxing的Java二维码生成与解码
# java微信扫描公众号二维码实现登陆功能
# java二维码生成的方法
# 二维码生成Java实现代码
# Java使用Google Zxing生成二维码的例子
# Java生成二维码可添加logo和文字功能
# Java中基于maven实现zxing二维码功能
# java中ZXing 生成、解析二维码图片的小示例
# java实现二维码生成的几个方法(推荐)
# java ZXing生成二维码及条码实例分享
# Java实现二维码生成的代码方法
# 不存在
# 则会
# 抛出
# 小编
# 的是
# 在此
# 就好
# 就把
# 要想
# 给大家
# 很简单
# 这篇文章
# 片中
# 所述
# 该文件
# 给我留言
# 时将
# 莫过于
# 前先
# 感谢大家
相关文章:
如何在Windows环境下新建FTP站点并设置权限?
linux top下的 minerd 木马清除方法
高性能网站服务器配置指南:安全稳定与高效建站核心方案
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
建站主机默认首页配置指南:核心功能与访问路径优化
网站制作企业,网站的banner和导航栏是指什么?
如何用PHP快速搭建高效网站?分步指南
公司网站制作需要多少钱,找人做公司网站需要多少钱?
如何在建站主机中优化服务器配置?
公众号网站制作网页,微信公众号怎么制作?
制作网站的软件免费下载,免费制作app哪个平台好?
小型网站制作HTML,*游戏网站怎么搭建?
常州企业建站如何选择最佳模板?
个人摄影网站制作流程,摄影爱好者都去什么网站?
如何通过宝塔面板实现本地网站访问?
建站VPS选购需注意哪些关键参数?
如何在新浪SAE免费搭建个人博客?
如何快速上传建站程序避免常见错误?
如何在宝塔面板创建新站点?
制作网站怎么制作,*游戏网站怎么搭建?
Python文件管理规范_工程实践说明【指导】
网站设计制作公司地址,网站建设比较好的公司都有哪些?
建站之星备案流程有哪些注意事项?
官网网站制作腾讯审核要多久,联想路由器newifi官网
如何在腾讯云服务器上快速搭建个人网站?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
如何选择域名并搭建高效网站?
如何通过山东自助建站平台快速注册域名?
制作旅游网站html,怎样注册旅游网站?
建站主机是否等同于虚拟主机?
XML的“混合内容”是什么 怎么用DTD或XSD定义
如何在企业微信快速生成手机电脑官网?
如何通过虚拟主机空间快速建站?
如何在阿里云虚拟主机上快速搭建个人网站?
PHP正则匹配日期和时间(时间戳转换)的实例代码
如何基于云服务器快速搭建网站及云盘系统?
深圳网站制作平台,深圳市做网站好的公司有哪些?
,巨量百应是干嘛的?
建站之星伪静态规则如何正确配置?
名字制作网站免费,所有小说网站的名字?
如何快速生成可下载的建站源码工具?
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
南宁网站建设制作定制,南宁网站建设可以定制吗?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
免费ppt制作网站,有没有值得推荐的免费PPT网站?
如何选择建站程序?包含哪些必备功能与类型?
网站制作说明怎么写,简述网页设计的流程并说明原因?
*请认真填写需求信息,我们会在24小时内与您取得联系。