生成一維碼條碼碼,掃碼查詢相關條碼信息

生活中購買商品時,我們常常可以見到結賬時,收銀員用掃碼槍掃描商品上面的條碼,然後統計購買商品的總金額,那商品上的條碼是如何實現掃描後獲取商品信息的.

1.首先每個商品對應的都有一個唯一標識符號
2.我們的條碼生成就是通過傳入這個標識符生成對應的條碼
3.如下代碼傳入商品標識符和寬高返回對應的字符串形式條碼
4.掃碼條碼時,我們通過識別的條碼標識符獲取相關商品詳細信息

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import javax.imageio.ImageIO;

import org.apache.commons.lang.StringUtils;
import org.jbarcode.JBarcode;
import org.jbarcode.encode.Code128Encoder;
import org.jbarcode.encode.EAN13Encoder;
import org.jbarcode.encode.InvalidAtributeException;
import org.jbarcode.paint.BaseLineTextPainter;
import org.jbarcode.paint.EAN13TextPainter;
import org.jbarcode.paint.WidthCodedPainter;
import org.krysalis.barcode4j.impl.code128.Code128Bean;
import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;

import sun.misc.BASE64Encoder;

public class BarcodeUtil {
	 /**  
     * 128條形碼  
     *  
     * @param strBarCode  
     *            條形碼:0-100位  
     * @param dimension  
     *            商品條形碼:尺寸  
     * @param barheight  
     *            商品條形碼:高度  
     * @return 圖片(Base64編碼)  
     */  
      public static String generateBarCode128(String strBarCode,String dimension,String barheight) {  
            try {  
                ByteArrayOutputStream outputStream = null;  
                BufferedImage bi = null;  
                int len = strBarCode.length();  
                JBarcode productBarcode = new JBarcode(Code128Encoder.getInstance(),  
                        WidthCodedPainter.getInstance(),  
                        EAN13TextPainter.getInstance());  
                // 尺寸,面積,大小 密集程度  
                productBarcode.setXDimension(Double.valueOf(dimension).doubleValue());  
                // 高度 10.0 = 1cm 默認1.5cm  
                productBarcode.setBarHeight(Double.valueOf(barheight).doubleValue());  
                // 寬度  
                productBarcode.setWideRatio(Double.valueOf(20).doubleValue());  
//                  是否顯示字體  
                productBarcode.setShowText(true);  
//                 顯示字體樣式  
                productBarcode.setTextPainter(BaseLineTextPainter.getInstance());   
                // 生成二維碼  
                bi = productBarcode.createBarcode(strBarCode);  
                  
                outputStream = new ByteArrayOutputStream();  
                ImageIO.write(bi, "jpg", outputStream);  
                BASE64Encoder encoder = new BASE64Encoder();  
//            System.err.println(encoder.encode(outputStream.toByteArray()));  
                return encoder.encode(outputStream.toByteArray());  
            } catch (Exception e) {  
                e.printStackTrace();  
                return "encodeError";  
            }  
        }  

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章