生成QR二维码图片示例

13 篇文章 0 订阅
8 篇文章 0 订阅
生成QR二维码图片的简单示例

QR二维码的生成,在生成QR二维条码中已经提及。不过上次是通过网站生成的,缺点是对网站的依赖。下面做了个调用zxing core实现生成QR二维码图片的示例。另外还可以通过这个办法生成其他条形码格式图形。

对程序生成图片开始扫描:

image

扫描出结果:

image

在zxing的官方网站:

http://code.google.com/p/zxing

没有提到生成条码图片的功能。core组件是:

The core image decoding library, and test code

是图形解码库,和测试代码。

找了其他的一些java实现的条码生成图片库:

  • barbecus,开源的,不过只有一维码,而且自从2007年5月以后再没有更新;
  • aspose barcode,可以免费试用,不过如需去掉上面的aspose demo字样,需要购买授权。

其实zxing官网提供了一个在线生成条形码的网站,这说明它有生成条码图片的代码。于是到core组件的源代码里面看了一下,果然有。

zxing没有单独的core组件下载。需要先下载zip包,是所有项目的源代码。用ant编译core部分,得到core.jar文件即可。该组件库运行时不依赖其他类库。

我把core库上传到自己的maven repository上了,通过maven使用更方便。zxing没有提供maven库或者上传到公共库中。


  com.google.zxing
  zxing-core
  1.5

源代码见:

http://easymorse.googlecode.com/svn/tags/barcode-demo-0.1/

需要注意的是,在做QR编码的时候要增加字符集声明,这里是UTF-8,否则中文会出现乱码。

主要编码在这个方法里面:

public void generate(OutputStream outputStream) {
    QRCodeWriter writer = new QRCodeWriter();

    try {
        ByteMatrix matrix = writer.encode(content, BarcodeFormat.QR_CODE,
                width, height, hints);
        byte[][] matrixByte = matrix.getArray();

        BufferedImage bimg = new BufferedImage(width, height,
                BufferedImage.TYPE_BYTE_GRAY);
        byte[] linearbuffer = new byte[width * height];

        for (int y = 0,i=0; y < height; y++) {
            for (int x = 0; x < width; x++) {
                linearbuffer[i++] = matrixByte[y][x];
            }
        }
        bimg.getRaster().setDataElements(0, 0, width, height, linearbuffer);

        ImageIO.write(bimg, "png", outputStream);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值