免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3970 | 回复: 0
打印 上一主题 下一主题

java 二维码+条形码解码+生成 zxing [复制链接]

论坛徽章:
1
操作系统版块每日发帖之星
日期:2015-07-07 22:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-07-06 14:16 |只看该作者 |倒序浏览
二维码条形码类库 感觉很好用

首先下载 gradle
//二维码
      'com.google.zxing:core:3.2.0',
      'com.google.zxing:javase:3.2.0'
      // android-core
      //'com.google.zxing:android-core:3.2.0'

ZxingEAN13Handler.java
  1. package com.sniper.survey.util;

  2. import java.awt.image.BufferedImage;
  3. import java.io.File;
  4. import java.io.FileOutputStream;

  5. import javax.imageio.ImageIO;

  6. import com.google.zxing.BarcodeFormat;
  7. import com.google.zxing.BinaryBitmap;
  8. import com.google.zxing.LuminanceSource;
  9. import com.google.zxing.MultiFormatReader;
  10. import com.google.zxing.MultiFormatWriter;
  11. import com.google.zxing.Result;
  12. import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
  13. import com.google.zxing.client.j2se.MatrixToImageWriter;
  14. import com.google.zxing.common.BitMatrix;
  15. import com.google.zxing.common.HybridBinarizer;

  16. public class ZxingEAN13Handler {
  17.     /**
  18.      * 条形码编码
  19.      *
  20.      * @param contents
  21.      * @param width
  22.      * @param height
  23.      * @param imgPath
  24.      */
  25.     public void encode(String contents, int width, int height, String imgPath) {
  26.         int codeWidth = 3 + // start guard
  27.                 (7 * 6) + // left bars
  28.                 5 + // middle guard
  29.                 (7 * 6) + // right bars
  30.                 3; // end guard
  31.         codeWidth = Math.max(codeWidth, width);
  32.         try {
  33.             BitMatrix bitMatrix = new MultiFormatWriter().encode(contents,
  34.                     BarcodeFormat.EAN_13, codeWidth, height, null);

  35.             MatrixToImageWriter.writeToStream(bitMatrix, "png",
  36.                     new FileOutputStream(imgPath));

  37.         } catch (Exception e) {
  38.             e.printStackTrace();
  39.         }
  40.     }

  41.     /**
  42.      * 解析条形码
  43.      *
  44.      * @param imgPath
  45.      * @return
  46.      */
  47.     public String decode(String imgPath) {
  48.         BufferedImage image = null;
  49.         Result result = null;
  50.         try {
  51.             image = ImageIO.read(new File(imgPath));
  52.             if (image == null) {
  53.                 System.out.println("the decode image may be not exit.");
  54.             }
  55.             LuminanceSource source = new BufferedImageLuminanceSource(image);
  56.             BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));

  57.             result = new MultiFormatReader().decode(bitmap, null);
  58.             return result.getText();
  59.         } catch (Exception e) {
  60.             e.printStackTrace();
  61.         }
  62.         return null;
  63.     }
  64.      
  65.     public static void main(String[] args) {  
  66.         String imgPath = "/home/sniper/桌面/zxing_EAN13.png";  
  67.         // 益达无糖口香糖的条形码  
  68.         String contents = "6923450657713";  
  69.    
  70.         int width = 105, height = 50;  
  71.         ZxingEAN13Handler handler = new ZxingEAN13Handler();  
  72.         handler.encode(contents, width, height, imgPath);  
  73.    
  74.         System.out.println("Michael ,you have finished zxing EAN13 encode.");  
  75.     }  
  76. }
复制代码
ZxingHandler.java
  1. package com.sniper.survey.util;

  2. import java.awt.image.BufferedImage;
  3. import java.io.File;
  4. import java.io.FileOutputStream;
  5. import java.util.Hashtable;
  6. import java.util.Map;

  7. import javax.imageio.ImageIO;

  8. import com.google.zxing.BarcodeFormat;
  9. import com.google.zxing.BinaryBitmap;
  10. import com.google.zxing.DecodeHintType;
  11. import com.google.zxing.EncodeHintType;
  12. import com.google.zxing.LuminanceSource;
  13. import com.google.zxing.MultiFormatReader;
  14. import com.google.zxing.MultiFormatWriter;
  15. import com.google.zxing.Result;
  16. import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
  17. import com.google.zxing.client.j2se.MatrixToImageWriter;
  18. import com.google.zxing.common.BitMatrix;
  19. import com.google.zxing.common.HybridBinarizer;
  20. import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

  21. /**
  22. * 二维码生成器
  23. *
  24. * @blog http://sjsky.iteye.com
  25. * @author Michael
  26. */
  27. public class ZxingHandler {

  28.     /**
  29.      * 生成二维码
  30.      *
  31.      * @param contents
  32.      * @param width
  33.      * @param height
  34.      * @param imgPath
  35.      */
  36.     public void encode(String contents, int width, int height, String imgPath) {
  37.         Map<EncodeHintType, Object> hints = new Hashtable<>();
  38.         // 指定纠错等级
  39.         hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
  40.         // 指定编码格式
  41.         hints.put(EncodeHintType.CHARACTER_SET, "GBK");
  42.         try {
  43.             BitMatrix bitMatrix = new MultiFormatWriter().encode(contents,
  44.                     BarcodeFormat.QR_CODE, width, height, hints);

  45.             MatrixToImageWriter.writeToStream(bitMatrix, "png",
  46.                     new FileOutputStream(imgPath));

  47.         } catch (Exception e) {
  48.             e.printStackTrace();
  49.         }
  50.     }

  51.     /**
  52.      * 解析二维码
  53.      *
  54.      * @param imgPath
  55.      * @return
  56.      */
  57.     public String decode(String imgPath) {
  58.         BufferedImage image = null;
  59.         Result result = null;
  60.         try {
  61.             image = ImageIO.read(new File(imgPath));
  62.             if (image == null) {
  63.                 System.out.println("the decode image may be not exit.");
  64.             }
  65.             LuminanceSource source = new BufferedImageLuminanceSource(image);
  66.             BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));

  67.             Map<DecodeHintType, Object> hints = new Hashtable<>();
  68.             hints.put(DecodeHintType.CHARACTER_SET, "GBK");

  69.             result = new MultiFormatReader().decode(bitmap, hints);
  70.             return result.getText();
  71.         } catch (Exception e) {
  72.             e.printStackTrace();
  73.         }
  74.         return null;
  75.     }

  76. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP