java生成二维码的三个工具
1. 使用SwetakeQRCode在Java项目中生成二维码
http://swetake.com/qr/ 下载地址
或着http://sourceforge.jp/projects/qrcode/downloads/28391/qrcode.zip
这个是日本人写的,生成的是我们常见的方形的二维码
可以用中文
如:5677777ghjjjjj
有朋友问我要这个图片生成的代码,我就在网上搜索然后整理了一个类,首先要把SwetakeQRCode的jar包qrcode.jar放在工程的编译路径下,这个包的下载地址就是上面给出的SwetakeQRCode的官网http://www.swetake.com/qrcode/java/qr_java.html ,下面是一个测试的类
import com.swetake.util.Qrcode; import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException; /**
* Created with IntelliJ IDEA.
* Date: 10/9/13
* Time: 11:31 AM
*/
public class QRCodeTest { private static int DEFAULT_WIDTH;
private static int UNIT_WIDTH = 10; public static void main(String args[]) throws Exception{
createImg(); } public static void createImg(){
Qrcode qrcode=new Qrcode();
//错误修正容量
//L水平 7%的字码可被修正
//M水平 15%的字码可被修正
//Q水平 25%的字码可被修正
//H水平 30%的字码可被修正
//QR码有容错能力,QR码图形如果有破损,仍然可以被机器读取内容,最高可以到7%~30%面积破损仍可被读取。
//相对而言,容错率愈高,QR码图形面积愈大。所以一般折衷使用15%容错能力。
qrcode.setQrcodeErrorCorrect('M');/* L','M','Q','H' */
qrcode.setQrcodeEncodeMode('B');/* "N","A" or other */
qrcode.setQrcodeVersion(3);/* 0-20 */ String testString = "5677777ghjjjjj"; byte[] buff = null;
try {
buff = testString.getBytes("utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
boolean[][] bRect = qrcode.calQrcode(buff);
DEFAULT_WIDTH = bRect.length * UNIT_WIDTH; BufferedImage bi = new BufferedImage(DEFAULT_WIDTH, DEFAULT_WIDTH, BufferedImage.TYPE_INT_RGB);
// int unitWidth = DEFAULT_WIDTH / bRect.length; // createGraphics
Graphics2D g = bi.createGraphics(); // set background
g.setBackground(Color.WHITE);
g.clearRect(0, 0, DEFAULT_WIDTH, DEFAULT_WIDTH);
g.setColor(Color.BLACK); if (buff.length>0 && buff.length <123){ for (int i=0;i<bRect.length;i++){ for (int j=0;j<bRect.length;j++){
if (bRect[j][i]) {
g.fillRect(j*UNIT_WIDTH, i*UNIT_WIDTH, UNIT_WIDTH-1, UNIT_WIDTH-1);
}
} }
} g.dispose();
bi.flush(); String FilePath="QRCode.png";
File f = new File(FilePath); try {
ImageIO.write(bi, "png", f);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Create QRCode finished!");
}
}
对于代码进行一下说明,其它的就不说了,主要说一下如何使QRcode充满整个画面,我这里就是先定义UNIT_WIDTH=10或着其它的值,然后再算出画面应该为多大,之后画出的就会充满整个画面,不过,这样好看是好看,我们就能控制画面的大小了,所以也可以先定义DEFAULT_WIDTH也就是画面的长宽,然后再算出UNIT_WIDTH,这样画面的大小就是固定的了,不过,这样算出的单位DEFAULT_WIDTH / bRect.length不一定整好整除,所以画面看起来会不太爽,这些都不是大问题,调一调就可以了。bRect.length这个的大小是由qrcode.setQrcodeVersion(3)这里面的值决定,不是由字符串的长度决定。
还有下面的zxing也可以生成这样的qrcode的。
2. 使用BarCode4j生成条形码和二维码
BarCode4j网址:http://sourceforge.net/projects/barcode4j/
barcode4j是使用datamatrix的二维码生成算法,为支持qr的算法
datamatrix是欧美的标准,qr为日本的标准,
barcode4j一般生成出来是长方形的
如:88777alec000yan
这个博客这方面说的挺清楚的:
http://baijinshan.iteye.com/blog/1004554
3.zxing
zxing 这个是google的 ,下载地址
http://code.google.com/p/zxing/downloads/list
import java.io.File;
import java.util.Hashtable; import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter; public class QRCodeEvents { public static void main(String []args)throws Exception{
String text = "你好";
int width = 100;
int height = 100;
String format = "png";
Hashtable hints= new Hashtable();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
BitMatrix bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height,hints);
File outputFile = new File("new.png");
MatrixToImageWriter.writeToFile(bitMatrix, format, outputFile); }
}
java生成二维码的三个工具的更多相关文章
- java生成二维码并融合模板工具类
二维码融合模板 二维码融合图片 import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.awt.Image; i ...
- java 生成二维码后叠加LOGO并转换成base64
1.代码 见文末推荐 2.测试 测试1:生成base64码 public static void main(String[] args) throws Exception { String dat ...
- 利用JAVA生成二维码
本文章整理于慕课网的学习视频<JAVA生成二维码>,如果想看视频内容请移步慕课网. 维基百科上对于二维码的解释. 二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图 ...
- java 生成二维码、可带LOGO、可去白边
1.准备工作 所需jar包: JDK 1.6: commons-codec-1.11.jar core-2.2.jar javase-2.2.jar JDK 1.7: commons-codec- ...
- java生成二维码打印到浏览器
java生成二维码打印到浏览器 解决方法: pom.xml的依赖两个jar包: <!-- https://mvnrepository.com/artifact/com.google.zxin ...
- 二维码相关---java生成二维码名片,而且自己主动保存到手机通讯录中...
版权声明:本文为博主原创文章,未经博主credreamer 同意不得转载 违者追究法律责任. https://blog.csdn.net/lidew521/article/details/244418 ...
- java生成二维码(需导入第三方ZXing.jar包)
//这个类是用来解析,通过图片解析该图片的网页链接是什么 package util; import java.awt.Graphics2D;import java.awt.geom.AffineTra ...
- 基于java生成二维码
二维码 二维码的概念 ...
- java生成二维码扫码网页自动登录功能
找了很多资料,七七八八都试了一遍,最终写出来了这个功能. 菜鸟一枚,此文只为做笔记. 简单的一个生成二维码,通过网页确认登录,实现二维码页面跳转到主页面. 有三个servlet: CodeServle ...
随机推荐
- jquery源码分析学习地址
http://www.ccvita.com/121.htmljQuery工作原理解析以及源代码示例http://www.cnblogs.com/haogj/archive/2010/04/19/171 ...
- Windows Server 2003 IIS支持ASP
1.ASP支持是很简单的 这里简单的说一下 2.安装IIS服务 这里就不多演示了 很简单的 3.安装完成后打开IIS的扩展功能 ASP代码测试页为: <% response.write( ...
- js学习笔记一-语法结构
js是区分大小写的,关键字.变量.函数名和所有的标识符都必须采取统一一致的大小写形式. js定义了unicode转义序列,以\u开头,其后跟随四个十六进制数,可以在字符串直接量.正则表达式直接量和标识 ...
- python的各种推导式(列表推导式、字典推导式、集合推导式)
推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的数据序列的结构体. 共有三种推导,在Python2和3中都有支持: 列表(lis ...
- TTL值的含义以及与域名DNS TTL值的区别
TTL值的含义以及与域名TTL值的区别 本文来源于时光漂流瓶 http://www.9usb.net , 原文地址: http://www.9usb.net/201004/ttl-yuyuming-t ...
- Flash制作遇到的小问题1--为何变形需要将图形打散(Ctrl+b)
今天上Flash实验课遇到一个小问题,就是我在画一个矩形如下图:
- 微软职位内部推荐-SDE2 (Windows - Power)
微软近期Open的职位: SDE2 (Windows - Power) Windows Partner Enablement team in Operating System Group is loo ...
- Windows下将txt导入MySQL及远程连接设置
1.修改字符编码,全部修改为gbk.这样修改,重启后又会恢复默认值. show variables like '%char%'; set character_set_database=gbk; 其中, ...
- 小王子浅读Effective javascript(一)了解javascript版本
哈哈,各位园友新年快乐!愚安好久没在园子里写东西了,这次决定针对javascript做一个系列,叫做<小王子浅读Effective javascript>,主要是按照David Herma ...
- Kali Linux 优化过程
修改输入法横向候选字 vim ~/.config/fcitx/conf fcitx-classic-ui.config 修改此行 为 false :VerticalList=False mb这玩 ...