关于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不是线程安全的,只能用在单线程环境下,多线 ...
随机推荐
- vue 回到顶部的小问题
今天在用vue项目中,实现回到顶部功能的时候,我写了一个backTop组件,接下来需要通过监听window.scroll事件来控制这个组件显示隐藏 因为可能会有其他的组件会用到这样的逻辑,所以将此功能 ...
- 微信公众号开发——通过ffmpeg解决amr文件无法播放问题
今天刚好碰到个需求,要在微信浏览器中实现录音,并在其他页面上播放.录音功能本身是JS SDK的功能,倒没啥问题,然而录音的文件保存下来是amr格式,而IOS的浏览器没法播放amr(据说微信浏览器的vi ...
- 关于理解python类的小题
今天看了python部落翻译的一篇<一道python类的小题>文章,感觉挺有启发性,记录下来: print('A') class Person(object): print('B') de ...
- C语言中static关键字的用法
C记得还是大一时学的,现在觉得好久没用了,又捧起来看看.今天刚看到有关static关键字,仔细地看了一遍<C和指针>这本书中的解释,现在觉得清楚多了. 首先,我们将static关键字,修饰 ...
- Mysql使用alias 防止对数据的误操作
在我们操作数据库的时候,尤其是执行,update,delete操作的时候,都存在着误操作的风险,今天发现一种方法,能避免这一问题,就是使用Mysql的alias . 1.查看Mysql帮助 #mysq ...
- C# winFrom窗体设计问题-部分文件打不开窗体设计器 变成类.cs
https://zhidao.baidu.com/question/1513483178103163220.html C# winform程序设计的时候,出现了问题.默认主窗体form1(改名form ...
- 漂亮的提示框SweetAlert使用教程
一.简介 所使用过的弹出框插件,SweetAlert是最好用的.发展至今,已经有两个版本,一个是原版 t4t5/sweetalert , 一个是分支版 limonte/sweetalert2 ,更新相 ...
- Winform应用程序实现通用遮罩层二
之前先后发表过:<Winform应用程序实现通用遮罩层>.<Winform应用程序实现通用消息窗口>,这两款遮罩层其实都是基于弹出窗口的,今天为大家分享一个比较简单但界面相对友 ...
- SSM中(Spring-SpringMVC-Mybatis)(二:整合)
使用Maven整合一个SSM,当然要配有Maven环境,Maven的环境配置自行百度,挺好配的 创建一个Maven项目以后,目录结构如图所示: 然后就是各部分配置: 首先pom导入依赖jar包: &l ...
- 自己封装的一个js方法用于获取显示的星期和日期时间
自己封装的一个js方法用于获取显示的星期和日期时间 /** * 获取用于显示的星期和日期时间 * @param date * @returns {string} */ function getWeek ...