需要jbarcode的jar包支持。
下载地址:https://sourceforge.net/projects/jbcode
注:部分同学使用eclipse时无法直接使用BASE64Encoder,解决方法在代码下面。
本文提供两种方式
套餐一:生成返回值为Base64编码的条形码。
套餐二:生成条形码并输出到本地。
代码如下:
1 public class BarcodeUtil { 2 3 /** 4 * @FunctionName generateBarCode128 (转自:http://blog.csdn.net/shb2058/article/details/77523330) 5 * @Description 生成返回值为Base64编码的条形码 6 * @param strBarCode 7 * @param dimension 8 * @param barheight 9 * @return 10 */ 11 public static String generateBarCode128(String strBarCode, String dimension, String barheight) { 12 13 try { 14 ByteArrayOutputStream outputStream = null; 15 BufferedImage bi = null; 16 JBarcode productBarcode = new JBarcode(Code128Encoder.getInstance(), WidthCodedPainter.getInstance(), 17 EAN13TextPainter.getInstance()); 18 19 // 尺寸,面积,大小 密集程度 20 productBarcode.setXDimension(Double.valueOf(dimension).doubleValue()); 21 // 高度 10.0 = 1cm 默认1.5cm 22 productBarcode.setBarHeigth(Double.valueOf(barheight).doubleValue()); 23 // 宽度 24 productBarcode.setWideRatio(Double.valueOf(30).doubleValue()); 25 // 是否显示字体 26 productBarcode.setShowText(true); 27 // 显示字体样式 28 productBarcode.setTextPainter(BaseLineTextPainter.getInstance()); 29 30 // 生成二维码 31 bi = productBarcode.createBarcode(strBarCode); 32 33 outputStream = new ByteArrayOutputStream(); 34 ImageIO.write(bi, "jpg", outputStream); 35 // 创建输出流 36 BASE64Encoder encoder = new BASE64Encoder(); 37 return encoder.encode(outputStream.toByteArray()); 38 } catch (Exception e) { 39 e.printStackTrace(); 40 return "encodeError"; 41 } 42 } 43 44 /** 45 * @FunctionName outImgToPath 46 * @Description 生成条形码并输出到本地 47 * @author 魔方Cube 48 * @param strBarCode 条形码:0-100位 49 * @param dimension 商品条形码:尺寸 50 * @param barheight 商品条形码:高度 51 * @param path 存储路径 52 */ 53 public static void outImgToPath(String strBarCode, String dimension, String barheight, String path) { 54 String encoder = generateBarCode128(strBarCode, dimension, barheight); 55 if(encoder==null){ 56 return; 57 } 58 BASE64Decoder decoder = new BASE64Decoder(); 59 byte[] b; 60 try { 61 b = decoder.decodeBuffer(encoder); 62 OutputStream out = new FileOutputStream(path); 63 out.write(b); 64 out.flush(); 65 out.close(); 66 } catch (IOException e) { 67 e.printStackTrace(); 68 } 69 } 70 71 /** 72 * @param args 73 * @throws InvalidAtributeException 74 */ 75 public static void main(String[] args) throws InvalidAtributeException { 76 77 String encode2 = BarcodeUtil.generateBarCode128("693698334", "0.5", "30"); 78 outImgToPath("693698334", "0.5", "30", "D:\\B.jpg"); 79 System.out.println(encode2); 80 81 } 82 83 }
解决使用eclipse时无法直接使用BASE64Encoder(推荐方法三):
方法一:右键项目->点击properties,选择Java Build Path设置项,再选择Libraries标签,Add External Jars添加%JAVA_HOME%\jre\lib\rt.jar就可以使用啦。
方法二:右键项目->点击properties,将自己配置的library 文件移除,再点击add library,选择jre system Library,点击---next,最后finish 完成即可
方法三:右键项目->点击properties,选择Java Build Path设置项,再选择Libraries标签,选中jre System Library,双击Access rules,点击add,resolution选择accessible,下面填上** 点击确定即可。如图: