提高zxing生成二维码的容错率及zxing生成二维码的边框设置(zxing 1.6)

转载 2016年08月29日 10:34:06

转载地址:http://blog.csdn.net/zz880329/article/details/22439911


最近做了一个项目要生成二维码,跟几年前不同,最近大家都喜欢在二维码中间加logo.

加logo倒是不难,两个图片叠一起就是了,但是遇到一个新问题,logo加得太大的话,会导致二维码扫描不出来;加的太小则不怎么明显.

上网看看网上在线生成二维码的地方,发现都有容错率的设置,从7%-30%,容错率越高,二维码的有效像素点就越多.

由于我们使用的是zxing,所以我们需要看看怎么设置zxing的二维码容错率.

翻阅了zxing的源码,在QRCodeWriter.Java中有这么一段:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. ErrorCorrectionLevel errorCorrectionLevel = ErrorCorrectionLevel.L;  
  2. if (hints != null) {  
  3.   ErrorCorrectionLevel requestedECLevel = (ErrorCorrectionLevel) hints.get(EncodeHintType.ERROR_CORRECTION);  
  4.   if (requestedECLevel != null) {  
  5.     errorCorrectionLevel = requestedECLevel;  
  6.   }  
  7. }  

这段描述了默认的容错级别是L,代码中注释是7%,显然是比较低的.设置方式也显而易见了,通过一个hashtables传入参数即可.因此将生成二维码的代码改成如下

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. /** 
  2.      * 用字符串生成二维码 
  3.      *  
  4.      * @param str 
  5.      * @author zhouzhe@lenovo-cw.com 
  6.      * @return 
  7.      * @throws WriterException 
  8.      */  
  9.     public static Bitmap Create2DCode(String str, int picWidth, int picHeight) throws WriterException {  
  10.         // 生成二维矩阵,编码时指定大小,不要生成了图片以后再进行缩放,这样会模糊导致识别失败  
  11.         Hashtable hints = new Hashtable();  
  12.         hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);  
  13.         BitMatrix matrix = new MultiFormatWriter().encode(str, BarcodeFormat.QR_CODE, picWidth, picHeight, hints);  
  14.         int width = matrix.getWidth();  
  15.         int height = matrix.getHeight();  
  16.         // 二维矩阵转为一维像素数组,也就是一直横着排了  
  17.         int[] pixels = new int[width * height];  
  18.         for (int y = 0; y < height; y++) {  
  19.             for (int x = 0; x < width; x++) {  
  20.                 if (matrix.get(x, y)) {  
  21.                     pixels[y * width + x] = 0xff000000;  
  22.                 } else {  
  23.                     pixels[y * width + x] = 0xffffffff;  
  24.                 }  
  25.   
  26.             }  
  27.         }  
  28.   
  29.         Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);  
  30.         // 通过像素数组生成bitmap,具体参考api  
  31.         bitmap.setPixels(pixels, 0, width, 00, width, height);  
  32.         return bitmap;  
  33.     }  

这样 生成的二维码想对默认的容错级别L,像素密度大不少,容错率也提升了,这样中间的logo图便可以放更大的logo图了.


另外发现默认生成出来的图片,除了二维码以外,还有一圈白色边框比较宽,如果背景不是白色的话比较难看.随即查了一下,

发现还是在 QRCodeWriter.java中,有个变量QUIET_ZONE_SIZE; 是控制的边框的宽度,默认是4,最小值是1,这里我们修改成0或者1都可以.再生成图片,发现效果就很好了.


二维码简介和容错率的问题

转:http://www.cnblogs.com/archoncap/p/5302012.html 二维码容错等级 2013-01-31 浏览次数:1,316 次 错误校正...
  • hwhua1986
  • hwhua1986
  • 2016年12月26日 20:35
  • 1501

zxing实现二维码生成和解析

二维码的生成与解析 google zxing
  • javaweiming
  • javaweiming
  • 2017年06月02日 15:23
  • 1433

提高zxing生成二维码的容错率及zxing生成二维码的边框设置(zxing 1.6)

最近做了一个项目要生成二维码,跟几年前不同,最近大家都喜欢在二维码中间加logo. 加logo倒是不难,两个图片叠一起就是了,但是遇到一个新问题,logo加得太大的话,会导致二维码扫描不出来;加的太小...
  • zz880329
  • zz880329
  • 2014年03月28日 22:42
  • 7701

zxing 二维码生成深度定制

之前写了一篇二维码服务定制的博文,现在则在之前的基础上,再进一步,花样的实现深度定制的需求,我们的目标是二维码上的一切都是可以由用户来随意指定...
  • liuyueyi25
  • liuyueyi25
  • 2017年08月12日 23:01
  • 382

关于Zxing的详细使用过程介绍

一、   二维码实现 本文使用ZXing 1.6实现条码/二维码识别。ZXing是个很经典的条码/二维码识别的开源类库,很早就有开发者在J2ME上使用ZXing了,不过要支持JSR-234规范(...
  • shdhenghao3
  • shdhenghao3
  • 2014年11月14日 09:39
  • 13561

Android使用zxing生成二维码,边框自定义宽度

1、基本方法 //二维码容错率,分四个等级:H、L 、M、 Q         ErrorCorrectionLevel level = ErrorCorrectionLevel.H;     ...
  • jdsjlzx
  • jdsjlzx
  • 2015年04月25日 11:21
  • 13286

提高zxing生成二维码的容错率及zxing生成二维码的边框设置

最近做了一个项目要生成二维码,跟几年前不同,最近大家都喜欢在二维码中间加logo. 加logo倒是不难,两个图片叠一起就是了,但是遇到一个新问题,logo加得太大的话,会导致二维码扫描不出来;加...
  • ackeep
  • ackeep
  • 2017年01月06日 11:28
  • 680

提高zxing生成二维码的容错率及zxing生成二维码的边框设置(zxing 1.6)

最近做了一个项目要生成二维码,跟几年前不同,最近大家都喜欢在二维码中间加logo. 加logo倒是不难,两个图片叠一起就是了,但是遇到一个新问题,logo加得太大的话,会导致二维码扫描不出来;加的太小...
  • zz880329
  • zz880329
  • 2014年03月28日 22:42
  • 7701

提高zxing生成二维码的容错率及zxing生成二维码的边框设置

提高zxing生成二维码的容错率及zxing生成二维码的边框设置(zxi,有需要的朋友可以参考下。 最近做了一个项目要生成二维码,跟几年前不同,最近大家都喜欢在二维码中间加logo. 加l...
  • z69183787
  • z69183787
  • 2016年06月01日 10:11
  • 996

二维码简介和容错率的问题

转:http://www.cnblogs.com/archoncap/p/5302012.html 二维码容错等级 2013-01-31 浏览次数:1,316 次 错误校正...
  • hwhua1986
  • hwhua1986
  • 2016年12月26日 20:35
  • 1501
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:提高zxing生成二维码的容错率及zxing生成二维码的边框设置(zxing 1.6)
举报原因:
原因补充:

(最多只允许输入30个字)