解决ZXING生成二维码图片白框太大的问题
2016-04-10 21:56
381 查看
最近项目里需要生成一些二维码,使用之后发现一些问题,生成之后的图片,白色边框区域太大了,导致二维码内容区域太小。
百度了一下,有人说设置EncodeHintType.MARGIN属性即可,这个属性值为1-4,实际测试发现并没有什么卵用。(顺便说一下,一些比较老的版本中,这个EncodeHintType只有CHARACTER_SET和ERROR_CORRECTION两种属性设置,比较新的库才新增了其他属性,我这里使用的是3.0版本)
后来找到另外一个解决办法:自己手动去除黑边,代码如下:
百度了一下,有人说设置EncodeHintType.MARGIN属性即可,这个属性值为1-4,实际测试发现并没有什么卵用。(顺便说一下,一些比较老的版本中,这个EncodeHintType只有CHARACTER_SET和ERROR_CORRECTION两种属性设置,比较新的库才新增了其他属性,我这里使用的是3.0版本)
后来找到另外一个解决办法:自己手动去除黑边,代码如下:
public static Bitmap Create2DCode(String str, int width, int height) { try { Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>(); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); hints.put(EncodeHintType.MARGIN, 1); BitMatrix matrix = new QRCodeWriter().encode(str, BarcodeFormat.QR_CODE, width, height); matrix = deleteWhite(matrix);//删除白边 width = matrix.getWidth(); height = matrix.getHeight(); int[] pixels = new int[width * height]; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { if (matrix.get(x, y)) { pixels[y * width + x] = Color.BLACK; } else { pixels[y * width + x] = Color.WHITE; } } } Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); bitmap.setPixels(pixels, 0, width, 0, 0, width, height); return bitmap; } catch (Exception e) { return null; } } private static BitMatrix deleteWhite(BitMatrix matrix) { int[] rec = matrix.getEnclosingRectangle(); int resWidth = rec[2] + 1; int resHeight = rec[3] + 1; BitMatrix resMatrix = new BitMatrix(resWidth, resHeight); resMatrix.clear(); for (int i = 0; i < resWidth; i++) { for (int j = 0; j < resHeight; j++) { if (matrix.get(i + rec[0], j + rec[1])) resMatrix.set(i, j); } } return resMatrix; }
相关文章推荐
- 批处理制作二维码生成器
- jQuery qrcode生成二维码的方法
- 使用jquery.qrcode.min.js实现中文转化二维码
- jquery插件qrcode在线生成二维码
- JavaScript生成二维码图片小结
- php制作中间带自己定义图片二维码的方法
- zbar解码二维码和条形码示例
- php使用qr生成二维码的示例分享
- php实现扫描二维码根据浏览器类型访问不同下载地址
- PHP微信开发之二维码生成类
- Jquery 类网页微信二维码图块滚动效果具体实现
- 使用PHP生成二维码的方法汇总
- Perl生成纯HTML代码二维码实例
- Symfony生成二维码的方法
- 基于JavaScript实现生成名片、链接等二维码
- 基于Android实现个性彩色好看的二维码
- Android开发实现模仿360二维码扫描功能实例详解
- Android编程实现二维码的生成与解析
- Android基于google Zxing实现各类二维码扫描效果
- 月下载量上千次Android实现二维码生成器app源码分享