博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java生成二维码的三个工具
阅读量:6125 次
发布时间:2019-06-21

本文共 3503 字,大约阅读时间需要 11 分钟。

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

对于代码进行一下说明,其它的就不说了,主要说一下如何使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

 

这个博客这方面说的挺清楚的: 

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);             }}

 

转载地址:http://tqfua.baihongyu.com/

你可能感兴趣的文章
STM32启动过程--启动文件--分析
查看>>
垂死挣扎还是涅槃重生 -- Delphi XE5 公布会归来感想
查看>>
淘宝的几个架构图
查看>>
Android扩展 - 拍照篇(Camera)
查看>>
JAVA数组的定义及用法
查看>>
充分利用HTML标签元素 – 简单的xtyle前端框架
查看>>
设计模式(十一):FACADE外观模式 -- 结构型模式
查看>>
iOS xcodebuile 自动编译打包ipa
查看>>
程序员眼中的 SQL Server-执行计划教会我如何创建索引?
查看>>
cmake总结
查看>>
数据加密插件
查看>>
linux后台运行程序
查看>>
win7 vs2012/2013 编译boost 1.55
查看>>
IIS7如何显示详细错误信息
查看>>
Android打包常见错误之Export aborted because fatal lint errors were found
查看>>
Tar打包、压缩与解压缩到指定目录的方法
查看>>
新手如何学习 jQuery?
查看>>
配置spring上下文
查看>>
Python异步IO --- 轻松管理10k+并发连接
查看>>
mysql-python模块编译问题解决
查看>>