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.");

    }

    }
  • 相关阅读:
    用leangoo看板工具实施多团队大规模敏捷开发
    单团队的Scrum敏捷开发-leangoo
    放弃在每日站会上按成员逐个发言
    Leangoo思维导图做OKR目标管理
    好用的思维导图软件(程序员必备)
    好用免费的思维导图工具,多人协作共同编辑
    什么是Scrum燃尽图?
    Scrum中文网-团队需要Scrum Master做这六件事
    项目管理工具Leangoo自定义字段的应用
    实施敏捷开发中,选择看板管理工具的几个要点
  • 原文地址:https://www.cnblogs.com/luyuefei/p/13386356.html
Copyright © 2011-2022 走看看