生成一维码条码码,扫码查询相关条码信息

生活中购买商品时,我们常常可以见到结账时,收银员用扫码枪扫描商品上面的条码,然后统计购买商品的总金额,那商品上的条码是如何实现扫描后获取商品信息的.

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";  
            }  
        }  

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