JAVA中如何实现生成Code128条形码转成Base64传递到前台

JAVA中如何实现生成Code128条形码转成Base64传递到前台,第1张

大部分帖子使用的是导入barcode4j-2.1.pom 由于比亚迪项目较老JDK1.6,我们导入jar包在阿里MAVEN库中拿到的是无法使用的(注意点)

JDK版本非1.8的使用jar包是 barcode4j-light.jar

下载地址:https://sourceforge.net/projects/barcode4j/files/barcode4j/Barcode4J%202.0/

百度网盘地址: https://pan.baidu.com/s/1limgwFzJ9W4LAuesC_YHfg?pwd=n1hp

提取码: n1hp 

 导入jar包就不做演示,自己百度一下怎么引入jar包到eclipse

注意点:  当前写法是BYD老项目的写法,返回方式、取值方式(记得改成自己项目的交互方式)

导入完成编写BarcodeUtil工具类控制层调用

package com.infoservice.dms.common.utils;

import org.apache.commons.lang.ObjectUtils;
import org.krysalis.barcode4j.HumanReadablePlacement;
import org.krysalis.barcode4j.impl.code128.Code128Bean;
import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
 
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;



/**
 * @ClassName BarCodeUtils
 * @Description TODO
 * @Author huangxiongwei
 * @Date 2022/4/25
 * @Version 1.0
 **/
public class BarCodeUtils {
 
/**
	 * 生成code128条形码
	 *
	 * @param height        条形码的高度
	 * @param width         条形码的宽度
	 * @param message       要生成的文本
	 * @param withQuietZone 是否两边留白
	 * @param hideText      隐藏可读文本
	 * @return 图片对应的字节码
	 */

	public static byte[] generateBarCode128(String message, Double height, Double width, boolean withQuietZone,
			boolean hideText) {
		Code128Bean bean = new Code128Bean();
		// 分辨率
		int dpi = 300;
		// 设置两侧是否留白
		bean.doQuietZone(withQuietZone);
 
		// 设置条形码高度和宽度
		bean.setBarHeight((double) ObjectUtils.defaultIfNull(height, 9.0D));
		if (width != null) {
			bean.setModuleWidth(width);
		}
		// 设置文本位置(包括是否显示)
		if (hideText) {
			bean.setMsgPosition(HumanReadablePlacement.HRP_NONE);
		}
		// 设置图片类型
		String format = "image/png";
 
		ByteArrayOutputStream ous = new ByteArrayOutputStream();
		BitmapCanvasProvider canvas = new BitmapCanvasProvider(ous, format, dpi, BufferedImage.TYPE_BYTE_BINARY, false,0);
 
		// 生产条形码
		bean.generateBarcode(canvas, message);
		try {
			canvas.finish();
		} catch (IOException e) {
			// ByteArrayOutputStream won't happen
		}
 
		return ous.toByteArray();
	}




}


 控制层调用

    /**
	 * 获取生成的code128条形码
	 * 
	 * @param msg
	 * @return
	 */
	public void String getBarcode128() throws IOException,BizException {
        //比亚迪获取前台参数方式
        ActionContext act = ActionContext.getContext();
        RequestWrapper request = act.getRequest();

        //获取传递的值
        String parameter = request.getParamValue("DELIVERY_NO");
        //通过Code128公具类生成条形码的数据流
		byte[] bytes = generateBarCode128(parameter, 10.0, 0.4, false, true);
        //拿到条形码数据流
		InputStream inputStream = new ByteArrayInputStream(bytes);
        //丢到把条形码数据流转换为Base64方法中
        String Base64String = getBase64FromInputStream(inputStream);
        
        //返回结果去前台(比亚迪的方式)
        act.setOutData("success",true);
        act.setOutData("datalist",Base64String );

	}

    //把文件流转为Base64
   public static String getBase64FromInputStream(InputStream in) throws BizException {
        // 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
        byte[] data = null;
        // 读取图片字节数组
        try {
            ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
            byte[] buff = new byte[100];
            int rc = 0;
            while ((rc = in.read(buff, 0, 100)) > 0) {
                swapStream.write(buff, 0, rc);
            }
            data = swapStream.toByteArray();
        } catch (IOException e) {
            // LOGGER.error("InputStream转换成base64失败:{}", e);
               throws new Bizexception("InputStream转换成base64失败:{}", e);
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                   // LOGGER.error("InputStream转换成base64失败:{}", e);
                      throws new Bizexception("InputStream转换成base64失败:{}", e);
                }
            }
        }
        //返回的字符串传到前台,添加到src属性中去,即可显示图片
        return "data:image/jpeg;base64,"+ new String(Base64.encodeBase64(data));
    }

 注意:如果需要不需要显示条码值

前台获取参数再使用(云桌面无法CV 直接贴图)

 结果如下:

总体参考博客有:

生成条形码工具类来自:

生成条形码 code39 和 code 128_xy途中的博客-CSDN博客_code39bean java

文件流转成Base64来自:

怎么才能将文件流或者图片转化为base64,传到前台展示 - 走看看

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/734081.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存