Java zxing生成条形码和二维吗代码实例

2020-03-04 16:03:09丽君

生成条形码

import java.awt.image.BufferedImage;
import java.io.File;
 
import javax.imageio.ImageIO;
 
import com.google.zxing.BarcodeFormat;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
 
/**
 * ZXing条形码编码/解码
 */
public class ZxingCode {
 
  /**
   * 条形码编码
   * 
   * @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
+ // 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 args
   */
  public static void main(String[] args) {
    String imgPath = "F:/zxing_EAN-13.png";
    String contents = "6926557300360";
    int width = 105, height = 50;
    encode(contents, width, height, imgPath);
    System.out.println("finished zxing EAN-13 encode.");
    String decodeContent = decode(imgPath);
    System.out.println("解码内容如下:" + decodeContent);
    System.out.println("finished zxing EAN-13 decode.");
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易采站长站。