java实现生成二维码

                                                     java实现生成二维码

二维码vs条形码

最大的区别就是:二维码具有容错功能,当二维码图片被遮挡一部分后,仍可以扫描出来。容错的原理是二维码在编码过程中进行了冗余,就像是123被编码成123123,这样只要扫描到一部分二维码图片,二维码内容还是可以被全部读到。

二维码容错率即是指二维码图标被遮挡多少后,仍可以被扫描出来的能力。容错率越高,则二维码图片能被遮挡的部分越多。

二维码容错率用字母表示,容错能力等级分为:L、M、Q、H四级:

L       7%

M     15%

Q      25%

H     30%

大多数情况下,我们强烈建议采用30%的容错率。对此我们做过各种型号手机的扫描测试。结果是:对目前主流手机,在绝大多数扫描场景下,容错率越高,越容易被快速扫描!!!

如果需要对二维码进行设计,比如需要在二维码中间加logo则需要选择H级容错率的二维码。当然,高容错率的代价是图片的复杂度提高。在实际操作中应该根据需求选择相应的容错级别。

注意,二维码边上的三个定位框和中间定位小块不能被遮挡。否则容错率再高也无法扫描。

所以超市当超市里面的商品上的条形码发生损坏事件时,是不能被扫描出来的,需要龚工作人员将条形码的号码输入电脑才可以计算价格。

实现二维码的思路:

1.首先引入两个包,qrcode_a.rar和qrcode_b.rar两个包,这两个包中已经实现了创建二维码,计算二维码的许多方法,只需要应用过来用就可以了,非常方便。

2.创建一个缓冲区图片;

3.从缓冲区图片的基础上创建画笔;

4.g.clearRect(0, 0, width, height);清空画面,准备画二维码;

5.设置二维码最后实现的信息;

6.将要实现的信息转化为字节数组;

7.用boolean类型的二维数组存放二维码,如果是true则描黑,false则留白;

代码实现:

package QRcode;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

import javax.imageio.ImageIO;

import com.swetake.util.Qrcode;

public class CreatQrCode {

    /*
     * 生成二维码
     */
    public static void main(String[] args) throws UnsupportedEncodingException {
        Qrcode qrcode=new Qrcode();
        //设置纠错等级
        qrcode.setQrcodeErrorCorrect(‘m‘);
        qrcode.setQrcodeEncodeMode(‘B‘);//N 数字 A a-z  B 中文,日文等等
        qrcode.setQrcodeVersion(10);//版本号1-40
        /*
         * GUI编程
         */
        //版本号与图片的长和宽是有联系的:这是一个固定的公式
        int width=67+12*(10-1);
        int height=67+12*(10-1);
        //设置偏移量,纠正二维码在解析时的错误
        int pianyiliang=2;
        //缓冲区图片
        BufferedImage buffimmage=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        //在缓冲区图片的基础上创造画笔
        Graphics2D g=buffimmage.createGraphics();
        g.setBackground(Color.WHITE);
        g.setColor(Color.BLACK);
        g.clearRect(0, 0, width, height);

        //开始画二维码
        /*
         * 设置二维码信息
         */
        String str="http://47.93.198.182";//这是一个程序员的表白网页

        //把字符串转化为字节数组
        byte[] bytes=str.getBytes("utf-8");
        if(bytes.length>0){
            //用boolean类型的二维数组存放二维码,如果是true则描黑,false则留白。qrcode.calQrcode(bytes);是计算二维码的信息的是方法
            boolean[][] bool=qrcode.calQrcode(bytes);
            //长和宽是一样的
            for(int i=0;i<bool.length;i++){
                for(int j=0;j<bool[i].length;j++){
                    if(bool[i][j]==true){
                        //画小方格
                        g.fillRect(i*3+pianyiliang, j*3+pianyiliang, 3, 3);
                    }
                }
            }
        }
        g.dispose();
        buffimmage.flush();

            //ctrl 1:提示错误的快捷键
            try {
                ImageIO.write(buffimmage, "png", new File("d://a1.png"));
            } catch (IOException e) {
                e.printStackTrace();
            }

    }

}

注意的事项:

1.二维码的版本号与图片的长和宽是有联系的,这里有一个固定的公式:67+12*(版本号-1);

2.在画小方格的时候,为了纠正二维码在解析时的错误,需要设置一定的额偏移量,g.fillRect(i*3+pianyiliang, j*3+pianyiliang, 3, 3);

3.画完二维码之后,画笔和缓冲区图片都要进行释放。

运行结果:

时间: 2024-11-05 23:24:45

java实现生成二维码的相关文章

JAVA中生成二维码图片的方法

JAVA中生成二维码的方法并不复杂,使用google的zxing包就可以实现.下面的方法包含了生成二维码.在中间附加logo.添加文字功能. 一.下载zxing的架包,并导入项目中,如下: 最主要的包都在com.google.zxing.core下.如果是maven项目,maven依赖如下: 1 <dependency> 2 <groupId>com.google.zxing</groupId> 3 <artifactId>core</artifact

Java简单生成二维码

二维码简介 二维条码/二维码(2-dimensional bar code,QRCode)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的:在代码编制上巧妙地利用构成计算机内部逻辑基础的"0"."1"比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集:每个字符占有一定的宽度:具有一定的校验功能等.同时

jquery生成二维码

直接进入正题: 引入jquery js 和jquery-qrcode.js ,稍后本人会将代码demo上传至资源库.代码很简单: 如果是非中文的字符生成二维码,那么就比较简单了. <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script type="text/javascript" src=

java生成二维码

具体代码如下,作为一个新手,期待与你一起交流: 1 import java.awt.Color; 2 import java.awt.Graphics2D; 3 import java.awt.image.BufferedImage; 4 import java.io.File; 5 6 import javax.imageio.ImageIO; 7 8 import com.swetake.util.Qrcode; 9 public class QRCodeEncoderHandler { 1

java生成二维码的三个工具

1.  使用SwetakeQRCode在Java项目中生成二维码 http://swetake.com/qr/ 下载地址 或着http://sourceforge.jp/projects/qrcode/downloads/28391/qrcode.zip 这个是日本人写的,生成的是我们常见的方形的二维码 可以用中文 如:5677777ghjjjjj  有朋友问我要这个图片生成的代码,我就在网上搜索然后整理了一个类,首先要把SwetakeQRCode的jar包qrcode.jar放在工程的编译路径

JAVA生成二维码图片代码

首先需要导入 QRCode.jar 包 下载地址看这里   http://pan.baidu.com/s/1o6qRFqM import java.awt.Color;import java.awt.Graphics2D;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.io.UnsupportedEncoding

java 生成 二维码 和jquery 生成二维码

生成二维码 Java 生成二维码: 思路为拿到jar 包知道里面的方法使用 Step one : 在https://github.com/zxing中下载(点击网页中名为 zxing 的a标签,跳转到源码页面,点击release 查看所有发布的源码,下载zip压缩文件 Step two:  解压文件后打开文件夹,将core包和javase包 中的com包拷贝到一java项目src目录下.右键导出 jar file  得到一个二维码开发的jar包 Step three: 进行二维码制作 impor

Java根据链接生成二维码

Java根据链接生成二维码 相关 jar 包: core-3.1.0.jar 源码及 jar 包下载:http://files.cnblogs.com/files/liaolongjun/qrcode.zip 可直接运行: package llj.mf.utils; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.io.OutputStream; i

java和js生成二维码

1. java生成二维码 1.1 依赖jar包配置(使用maven依赖) 1 <dependency> 2 <groupId>com.google.zxing</groupId> 3 <artifactId>core</artifactId> 4 <version>3.0.0</version> 5 </dependency> 6 <dependency> 7 <groupId>com.