全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java实现二维码功能的实例代码

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

今天这篇文章,主要是利用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实现二维码生成的代码方法  # 不存在  # 则会  # 抛出  # 小编  # 的是  # 在此  # 就好  # 就把  # 要想  # 给大家  # 很简单  # 这篇文章  # 片中  # 所述  # 该文件  # 给我留言  # 时将  # 莫过于  # 前先  # 感谢大家 


相关文章: 专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站之星如何保障用户数据免受黑客入侵?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  定制建站模板如何实现SEO优化与智能系统配置?18字教程  代购小票制作网站有哪些,购物小票的简要说明?  如何在Windows 2008云服务器安全搭建网站?  建站主机数据库如何配置才能提升网站性能?  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  建站之星在线版空间:自助建站+智能模板一键生成方案  IOS倒计时设置UIButton标题title的抖动问题  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  nginx修改上传文件大小限制的方法  网站制作费用多少钱,一个网站的运营,需要哪些费用?  建站主机选择指南:服务器配置与SEO优化实战技巧  建站之星代理如何优化在线客服效率?  如何用免费手机建站系统零基础打造专业网站?  如何在七牛云存储上搭建网站并设置自定义域名?  高防服务器租用如何选择配置与防御等级?  东莞专业制作网站的公司,东莞大学生网的网址是什么?  如何快速登录WAP自助建站平台?  如何通过虚拟主机快速完成网站搭建?  子杰智能建站系统|零代码开发与AI生成SEO优化指南  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  建站之星安装提示数据库无法连接如何解决?  网页设计网站制作软件,microsoft office哪个可以创建网页?  无锡营销型网站制作公司,无锡网选车牌流程?  如何用PHP快速搭建CMS系统?  如何通过建站之星自助学习解决操作问题?  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  建站之星如何实现网站加密操作?  香港网站服务器数量如何影响SEO优化效果?  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  网站制作软件有哪些,制图软件有哪些?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  如何选择香港主机高效搭建外贸独立站?  如何在Golang中使用replace替换模块_指定本地或远程路径  建站之星价格显示格式升级,你的预算足够吗?  大连网站制作公司哪家好一点,大连买房网站哪个好?  如何基于云服务器快速搭建个人网站?  香港服务器租用费用高吗?如何避免常见误区?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  如何快速上传建站程序避免常见错误?  名字制作网站免费,所有小说网站的名字?  如何快速完成中国万网建站详细流程?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  ,怎么在广州志愿者网站注册?  如何通过商城自助建站源码实现零基础高效建站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。