关于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不是线程安全的,只能用在单线程环境下,多线 ...
随机推荐
- 【1】ArcGIS API for JavaScript 4.5/4.6 本地部署
惭愧,和我的学弟比起来,我所开始接触前端开发,ArcGIS API for JavaScript的时间和深度远远不及于他. 一年之尾,亦是一年之始,我也将正式开始我的博客生涯.本人在校学习并且做项目, ...
- ArcGIS API for JavaScript 4.2学习笔记[6] goTo()地图动画
这是个很有意思的例子,不过例子给的比较复杂,需要查很多API,我会在文章最后给出关键的类和属性解释. 同样发现一个很有意思的事儿:博客园似乎有爬虫,我4号发布的blogs,5号就在百度和google搜 ...
- 【bzoj3809】Gty的二逼妹子序列
Description Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题. 对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b]的妹子的美丽度的种类数. 为了方便,我们 ...
- 谈谈序列化—实体bean一定要实现Serializable接口?
导读:最近在做项目的过程中,发现一个问题,就是我们最开始的时候,传递参数包括返回类型,都有map类型.但是由于map每次都要匹配key值,很麻烦.所以在之后就将参数传递和返回类型全都改成了实体bean ...
- install pytorch
1. install and update pip3 2. install numpy and scipy 3. install pytorch
- 初学ssm框架的信息
ssm框架,就是Spring ,SpringMVC ,mybstis 的简称,我们是从mybstis 开始学起的,mybatis的作用作为一个连接数据库的框架,可以很好配置连接好数据库, 有mybat ...
- 【http转https】其之二:申请Let's Encrypt颁发SSL证书
文:铁乐猫 2017年1月12日 申请Let's Encrypt颁发SSL证书 由 ISRG(Internet Security Research Group,互联网安全研究小组)提供服务, ISRG ...
- Numpy
一 : 安装ipython以及用到的包介绍 # 这里我们会用到ipython解释器,本文代码在ipython下运行 Pip3 install ipython Pip3 install jupyter ...
- 前端学习_02_vps、web服务器、域名申请
vps申请 国内比较好用的服务器:阿里云,青云:在国内申请ip比较方便,但是必须要备案域名,否则马上就会被封禁掉. 话说我也有点自己的思路想做个网站,服务器还真的是个问题. 小型的网站只需要ECS服务 ...
- robotframework的学习笔记(十二)------DatabaseLibrary 库
1.安装DatabaseLibrary库 DatabaseLibrary 下载地址:https://pypi.python.org/pypi/robotframework-databaselibrar ...