关于JAVA实现二维码以及添加二维码LOGO
今天在公司,完成了之前的任务,没有什么事做,就想鼓捣一下二维码,因为之前没有接触过,我就去翻看了几本书,也基本完成了二维码的实现,以及添加二维码的LOGO。
现在绘制二维码一般都使用的是谷歌的zxing的一个核心包,链接:https://pan.baidu.com/s/1eSB5tlg 密码:e7eg
好了,不多说了,直接上代码!
首先是我们一个工具类的编写,用于生成二维码,和添加LOGO
package com.warrenwell.Test; import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException; import javax.imageio.ImageIO; import com.google.zxing.common.BitMatrix; public final class MatrixWriteToImage {
private static final int BLACK=0XFF000000;
private static final int WHITE=0XFFFFFFFF;
private MatrixWriteToImage(){ }
public static BufferedImage toBufferedImage(BitMatrix matrix){
BufferedImage bi=new BufferedImage(matrix.getWidth(), matrix.getHeight(), BufferedImage.TYPE_INT_RGB);
for(int i=0;i<matrix.getWidth();i++){
for(int j=0;j<matrix.getHeight();j++){
//有值的是黑色,没有值是白色
bi.setRGB(i, j,matrix.get(i, j)?BLACK:WHITE);
}
}
return bi;
}
public static void MatrixToImage(BitMatrix matrix,String format,File f) throws IOException{
//将我们的logo提取出来,建议这里单独写一个方法,我只是为了方便
BufferedImage b=ImageIO.read(new File("e:/1.jpg"));
//将logo弄成70*70,如果想大点,记得要提高我们二维码的容错率
Image image=b.getScaledInstance(70, 70,Image.SCALE_FAST);
BufferedImage bi=toBufferedImage(matrix);
//获取二维码画刷
Graphics g=bi.getGraphics();
//定位
g.drawImage(image ,250,150,null);
//二维码画到相应文件位置,结束。
if(ImageIO.write(bi, format, f)){ }
System.out.println("成功!");
}
}
之后就在我们的主要的函数中进行调用:
package com.warrenwell.Test; import java.io.File;
import java.io.IOException;
import java.util.HashMap; import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix; public class ErweiMa {
public static void main(String[] args) throws WriterException, IOException {
MultiFormatWriter mulwriter=new MultiFormatWriter();
//写入二维码的内容,也可以是链接,xml,json字符串
String content="qwqwQAQ";
//对EncodeHintType的各种设置写入一个map中
HashMap<EncodeHintType, Object> hints=new HashMap<>();
//设置我们放入的字符串编码为utf-8
hints.put(EncodeHintType.CHARACTER_SET,"utf-8");
//长宽,二维码为QR码
BitMatrix bitmatrix=mulwriter.encode(content,BarcodeFormat.QR_CODE, 400,400,hints);
//调用MatrixWriteToImage的方法
MatrixWriteToImage.MatrixToImage(bitmatrix,"png",new File("f:/1.png"));
}
}
最后我们的二维码就会在我们的F盘中出现了,大家可以也去试试呢。
关于修改我们的二维码的容错率也是通过写入我们的Line19的hashmap中进行修改,只需要添加一行,将我们的容错率级别提高,那么你的LOGO就可以大一点了。
hints.put(EncodeHintType.ERROR_CORRECTION,ErrorCorrectionLevel.H);
本人在苏州做软件开发一年多,希望能够和大家一起学习,计算机一直是我的兴趣爱好,这是我第一篇博客,是今天无聊的一时兴起,不过也会坚持下去。
关于JAVA实现二维码以及添加二维码LOGO的更多相关文章
- PDF文件添加二维码水印教程
maven配置iText的jar,主要不是所有私服都有iText的jar,maven仓库没有的,可以去https://mvnrepository.com/artifact/com.itextpdf/i ...
- FastReport 中添加二维码功能.(Delphi)
http://www.cnblogs.com/fancycloud/archive/2011/07/24/2115240.html FastReport 中添加二维码功能.(Delphi) 在实际 ...
- 【转】如何在您的PCB大作上添加二维码?
开篇先给大家来段新闻截选: “8月20日,新加坡总理李显龙在国庆群众大会上演讲时,称中国移动支付(电子支付)领先全球,新加坡的移动支付还很落后,上海路边摊都有移动支付,新加坡人去上海就像乡巴佬. 这番 ...
- Java中使用google.zxing快捷生成二维码(附工具类源码)
移动互联网时代,基于手机端的各种活动扫码和收付款码层出不穷:那我们如何在Java中生成自己想要的二维码呢?下面就来讲讲在Java开发中使用 google.zxing 生成二维码. 一般情况下,Java ...
- Java使用QRCode.jar生成与解析二维码
原文V:http://www.cnblogs.com/bigroc/p/7496995.html#3797682 正题:Java使用QRCode.jar生成与解析二维码demo 欢迎新手共勉,大神监督 ...
- Android实例-实现扫描二维码并生成二维码(XE8+小米5)
相关资料: 第三方资料太大没法写在博文上,请下载CSDN的程序包. 程序包下载: http://download.csdn.net/detail/zhujianqiangqq/9657186 注意事项 ...
- JS生成二维码,允许中文转码
一.使用jquery-qrcode生成二维码 先简单说一下jquery-qrcode,这个开源的三方库(可以从https://github.com/jeromeetienne/jquery-qrcod ...
- Android zxing 解析二维码,生成二维码极简demo
zxing 官方的代码很多,看起来很费劲,此demo只抽取了有用的部分,实现了相机预览解码,解析本地二维码,生成二维码三个功能. 简化后的结构如下: 废话少说直接上代码: BaseDecodeHand ...
- Java集合源码分析(二)ArrayList
ArrayList简介 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存. ArrayList不是线程安全的,只能用在单线程环境下,多线 ...
随机推荐
- DeepLearning.ai学习笔记汇总
第一章 神经网络与深度学习(Neural Network & Deeplearning) DeepLearning.ai学习笔记(一)神经网络和深度学习--Week3浅层神经网络 DeepLe ...
- [置顶]
webapi token、参数签名是如何生成的
一个问题 在这里我想问大家一句,如果你向一个刚刚接触.net web后端程序开发的同学(别人刚刚也就学了webform的request,response,会提交表单的这种刚接触不久的同学),你怎么去解 ...
- IT服务(运维)管理实施的几个要点--第一章 IT服务质量的标准
子曰"干的最好就是个60分,稍有纰漏就是不及格" 谈一个事情,最先要谈的就是统一标准,又或者这个标准已经约定俗成,广泛认可,所以就可以略过.对于IT服务质量来说,确实有一个统一的标 ...
- ES6 let和const命令(3)
const 用来声明常量.一旦声明,就不能改变. const在声明必须初始化,只声明不赋值会出错 const的作用域与let一样,只在声明的块级作用域有效. const命令声明的常量也不提升,同样存在 ...
- 控制input 输入框的placeholder
/*webkit placeholder居右*/ ::-webkit-input-placeholder { color: #e7e7e7; text-indent: .3rem; font-size ...
- 2.Nginx日常维护技巧
Nginx日常维护技巧 Nginx配置正确性检查 nginx提供了配置文件调试功能,可以快速定义配置文件存在的问题.执行如下命令检测配置文件的正确性: [root@localhost 桌面]# whi ...
- MyBatis中批量插入数据对插入记录数的限制
<基于Mybatis框架的批量数据插入的性能问题的探讨>(作者:魏静敏 刘欢杰 来源:<计算机光盘软件与应用> 2013 年第 19 期)中提到批量插入的记录数不能超过1000 ...
- [编织消息框架][JAVA核心技术]动态代理应用7-IRpcSend实现
根据设计生成两个接口,IRpcSend send方法返回数据要求包装成QResult对象 public interface IRpcSend { public <T> QResult< ...
- 原来你是这样的JAVA[02]-包、传参、构造器
一.包(package) 在java程序中,一个java源文件称为编译单元,以.java后缀命名.编译单元内可以有一个public类,类名必须与文件名相同.注意:每个编译单元只能有一个public类. ...
- Nifi自定义processor
有关nifi的基本介绍和架构可以参考nifi官网 一下介绍nifi的一些比较重要的类和自己的一些理解,我刚刚接触nifi: nifi的数据流可以表示为一个flow这是一个队列,每个数据包被封装在flo ...