首页
登录 | 注册

JAVA生成条形码

1) 添加依赖

1 <dependency>
2     <groupId>net.sf.barcode4j</groupId>
3     <artifactId>barcode4j-light</artifactId>
4     <version>2.0</version>
5 </dependency>

2)编写工具类

JAVA生成条形码
JAVA生成条形码
  1 mport org.apache.commons.codec.binary.Base64;
  2 import org.apache.commons.lang.StringUtils;
  3 import org.krysalis.barcode4j.impl.code39.Code39Bean;
  4 import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
  5 import org.krysalis.barcode4j.tools.UnitConv;
  6 
  7 import java.awt.image.BufferedImage;
  8 import java.io.*;
  9 
 10 /**
 11  * @author :CX
 12  * @Date :Create in 2018/9/3 11:20
 13  * @Effect : 获取条形码
 14  */
 15 public class BarCodeUtil {
 16 
 17     /**
 18      * 生成文件
 19      *
 20      * @param msg
 21      * @param path
 22      * @return
 23      */
 24     public static File generateFile(String msg, String path) {
 25         File file = new File(path);
 26         try {
 27             generate(msg, new FileOutputStream(file));
 28         } catch (FileNotFoundException e) {
 29             throw new RuntimeException(e);
 30         }
 31         return file;
 32     }
 33 
 34     /**
 35      * 生成字节
 36      *
 37      * @param msg
 38      * @return
 39      */
 40     private static byte[] generate(String msg) {
 41         ByteArrayOutputStream ous = new ByteArrayOutputStream();
 42         generate(msg, ous);
 43         return ous.toByteArray();
 44     }
 45 
 46     /**
 47      * 生成到流
 48      *
 49      * @param msg
 50      * @param ous
 51      */
 52     public static void generate(String msg, OutputStream ous) {
 53         if (StringUtils.isEmpty(msg) || ous == null) {
 54             return;
 55         }
 56 
 57         Code39Bean bean = new Code39Bean();
 58 
 59         // 精细度
 60         final int dpi = 80;
 61         // module宽度
 62         final double moduleWidth = UnitConv.in2mm(2.0f / dpi);
 63 
 64         // 配置对象
 65         bean.setModuleWidth(moduleWidth);
 66         bean.setWideFactor(3);
 67         bean.doQuietZone(false);
 68 
 69         String format = "image/png";
 70         try {
 71 
 72             // 输出到流
 73             BitmapCanvasProvider canvas = new BitmapCanvasProvider(ous, format, dpi,
 74                     BufferedImage.TYPE_BYTE_BINARY, false, 0);
 75 
 76             // 生成条形码
 77             bean.generateBarcode(canvas, msg);
 78 
 79             // 结束绘制
 80             canvas.finish();
 81         } catch (IOException e) {
 82             throw new RuntimeException(e);
 83         }
 84     }
 85 
 86     /**
 87      *@参数
 88      *@返回值
 89      *@创建人  cx
 90      *@创建时间
 91      *@描述   条形码的 64 位字符串
 92      */
 93     public static String getBarCodeBase64Str(String orderNo)  {
 94 
 95         byte[] bytes = Base64.encodeBase64(generate(orderNo));
 96         String utf8 = null;
 97         try {
 98             utf8 = new String(bytes, "utf8");
 99         } catch (UnsupportedEncodingException e) {
100             e.printStackTrace();
101         }
102         return  utf8 ;
103     }
104     /**
105      *@参数  
106      *@返回值  
107      *@创建人  cx
108      *@创建时间  
109      *@描述   file 转bate[]
110      */
111     private static byte[] getBytes(File file){
112         byte[] buffer = null;
113         try {
114             FileInputStream fis = new FileInputStream(file);
115             ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
116             byte[] b = new byte[1000];
117             int n;
118             while ((n = fis.read(b)) != -1) {
119                 bos.write(b, 0, n);
120             }
121             fis.close();
122             bos.close();
123             buffer = bos.toByteArray();
124         } catch (FileNotFoundException e) {
125             e.printStackTrace();
126         } catch (IOException e) {
127             e.printStackTrace();
128         }
129         return buffer;
130     }
131 }
工具类

3) 页面展示

<img src="data:image/png;base64, 条形码的 BASE64编码字符串 "/>

 JAVA生成条形码

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

注意: 如果不需要将生成的图片文件保存到数据库的话在获取条码的时候获取到流之后转换成base64 字符串给前段展示就好了,不用获取文件!

 


相关文章

  • 一.前言 在日常开发中,我们经常会碰到需要在运行时才知道对象个数的情况,这种情况不能使用数组,因为数组是固定数量的,这个时候我们就会使用集合,因为集合可以存储数量不确定的对象. 集合类是特别有用的工具类,不仅可以存储数量不等的对象,还可以实 ...
  • 为什么说 Java 程序员到了必须掌握 Spring Boot 的时候?
    Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,就单从我个人的博客的访问量大幅增加就可以感受到大家对学习 Spring Boot 的热情,那么在这么多人热衷于学习 Spring Boot 之时,我自己也在 ...
  • final关键字可用于修饰类.方法和变量,final修饰的类不能被继承:final修饰的方法不可被重写:final修饰的变量不可被改变. 1. final类 final修饰的类不能被继承意思是final修饰的类不可以有子类,java.lan ...
  • java中常见的集合类大部分是非线程安全的,在多线程情况下会报并发修改异常(ConcurrentModificationException) 并发下的ArrayList类: 1 //集合类不安全的例子 2 public class Coll ...
  • java游戏开发杂谈
    线程,让游戏拥有了动态变化的能力. java的图形界面,在启动的时候,就开始了一个线程. 这个线程负责处理:JFrame.JPanel等的绘制.事件处理. 它是由操作系统调用的,在程序启动时开启,程序关闭时消亡. 这个线程里执行的逻辑,支撑 ...
  • 最近老师老是不讲新课,好繁!!! 还是来说抽象类吧. public abstract class A{ //因为下边有一个抽象方法,所以这就必须要是一个抽象类,要不然编译不能通过 public void c(){ System.out.pr ...

2020 cecdns.com webmaster#cecdns.com
12 q. 0.070 s.
京ICP备10005923号