package com.zy.common.utils; 
 | 
  
 | 
import com.google.zxing.*; 
 | 
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; 
 | 
import com.google.zxing.oned.Code128Writer; 
 | 
  
 | 
import javax.imageio.ImageIO; 
 | 
import java.awt.image.BufferedImage; 
 | 
import java.io.File; 
 | 
import java.util.HashMap; 
 | 
  
 | 
/** 
 | 
 * 条形码工具 
 | 
 * Created by vincent on 2020/6/6 
 | 
 */ 
 | 
public class BarcodeUtils { 
 | 
  
 | 
    private static final int DEFAULT_WIDTH = 110; 
 | 
    private static final int DEFAULT_HEIGHT = 35; 
 | 
  
 | 
    /** 
 | 
     * 条形码编码 
 | 
     */ 
 | 
    public static BufferedImage encode(String string) { 
 | 
        return encode(string, null, null); 
 | 
    } 
 | 
  
 | 
    public static BufferedImage encode(String string, Integer width, Integer height) { 
 | 
        try { 
 | 
            Code128Writer writer = new Code128Writer(); 
 | 
            BitMatrix bar = writer.encode(string, BarcodeFormat.CODE_128, width == null ? DEFAULT_WIDTH : width, height == null ? DEFAULT_HEIGHT : height, new HashMap<>()); 
 | 
            return MatrixToImageWriter.toBufferedImage(bar); 
 | 
        } catch (WriterException e) { 
 | 
            throw new RuntimeException(e); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 条形码解码 
 | 
     */ 
 | 
    public static String decode(String imgPath) { 
 | 
        BufferedImage image = null; 
 | 
        Result result = null; 
 | 
        try { 
 | 
            image = ImageIO.read(new File(imgPath)); 
 | 
            if (image == null) { 
 | 
                throw new RuntimeException("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; 
 | 
    } 
 | 
  
 | 
    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); 
 | 
        System.out.println("finished zxing EAN-13 encode."); 
 | 
        String decodeContent = decode(imgPath); 
 | 
        System.out.println("解码内容如下:" + decodeContent); 
 | 
        System.out.println("finished zxing EAN-13 decode."); 
 | 
    } 
 | 
  
 | 
} 
 |