zoukankan      html  css  js  c++  java
  • 条形码和二维码编码解码

    public class ZxingHandler {

    /**
    * 条形码编码
    *
    * @param contents
    * @param width
    * @param height
    * @param imgPath
    */
    public static void encode(String contents, int width, int height, String imgPath) {
    int codeWidth = 3 + // start guard
    (7 * 6) + // left bars
    5 + // middle guard
    (7 * 6) + // right bars
    3; // end guard
    codeWidth = Math.max(codeWidth, width);
    try {
    BitMatrix bitMatrix = new MultiFormatWriter().encode(contents,
    BarcodeFormat.EAN_13, codeWidth, height, null);

    MatrixToImageWriter
    .writeToFile(bitMatrix, "png", new File(imgPath));

    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    /**
    * 条形码解码
    *
    * @param imgPath
    * @return String
    */
    public static String decode(String imgPath) {
    BufferedImage image = null;
    Result result = null;
    try {
    image = ImageIO.read(new File(imgPath));
    if (image == null) {
    System.out.println("the decode image may be not exit.");
    }
    LuminanceSource source = new BufferedImageLuminanceSource(image);
    BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));

    result = new MultiFormatReader().decode(bitmap, null);
    return result.getText();
    } catch (Exception e) {
    e.printStackTrace();
    }
    return null;
    }

    /**
    * 二维码编码
    *
    * @param contents
    * @param width
    * @param height
    * @param imgPath
    */
    public static void encode2(String contents, int width, int height, String imgPath) {
    Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
    // 指定纠错等级
    hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
    // 指定编码格式
    hints.put(EncodeHintType.CHARACTER_SET, "GBK");
    try {
    BitMatrix bitMatrix = new MultiFormatWriter().encode(contents,
    BarcodeFormat.QR_CODE, width, height, hints);

    MatrixToImageWriter
    .writeToFile(bitMatrix, "png", new File(imgPath));

    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    /**
    * 二维码解码
    *
    * @param imgPath
    * @return String
    */
    public static String decode2(String imgPath) {
    BufferedImage image = null;
    Result result = null;
    try {
    image = ImageIO.read(new File(imgPath));
    if (image == null) {
    System.out.println("the decode image may be not exit.");
    }
    LuminanceSource source = new BufferedImageLuminanceSource(image);
    BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));

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

    result = new MultiFormatReader().decode(bitmap, hints);
    return result.getText();
    } catch (Exception e) {
    e.printStackTrace();
    }
    return null;
    }

    /**
    * @param args
    */
    public static void main(String[] args) {

    // 条形码
    String imgPath = "target\zxing_EAN13.png";
    String contents = "6923450657713";
    int width = 105, height = 50;

    ZxingHandler.encode(contents, width, height, imgPath);
    System.out.println("finished zxing EAN-13 encode.");

    String decodeContent = ZxingHandler.decode(imgPath);
    System.out.println("解码内容如下:" + decodeContent);
    System.out.println("finished zxing EAN-13 decode.");

    // 二维码
    String imgPath2 = "target\zxing.png";
    String contents2 = "Hello Gem, welcome to Zxing!"
    + " Blog [ http://thinkgem.iteye.com ]"
    + " EMail [ thinkgem@163.com ]";
    int width2 = 300, height2 = 300;

    ZxingHandler.encode2(contents2, width2, height2, imgPath2);
    System.out.println("finished zxing encode.");

    String decodeContent2 = ZxingHandler.decode2(imgPath2);
    System.out.println("解码内容如下:" + decodeContent2);
    System.out.println("finished zxing decode.");

    }

    }
  • 相关阅读:
    批处理 windows service 的安装与删除
    HTML 页面元素介绍
    六 redis学习笔记之发布订阅
    发布个c#版的HandlerSocket客户端类库
    数据库单元测试
    一 redis学习笔记之环境搭建
    七 redis学习笔记之持久化
    三 redis学习笔记之排序
    四 redis学习笔记之事务
    元数据编程实战_使用Emit运行时生成Protobuf编码类
  • 原文地址:https://www.cnblogs.com/luyuefei/p/13386356.html
Copyright © 2011-2022 走看看