条形码生成工具类

package cn.com.utils;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Component;
import org.springframework.util.Base64Utils;
import java.io.File;
import java.io.FileInputStream;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.Map;

public class BarUtils {

    /**
     * 绘制条形码
     *
     * @param content   要生成条形码包含的内容
     * @return 返回生成条形的位图
     */
    public static File createBarcode(String content) throws Exception {
        final int width = 180;
        final int height = 50;
        final String format = "png";
        //配置参数
        Map<EncodeHintType, Object> hints = new HashMap<>();
        hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
        // 容错级别 这里选择最高H级别
        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
        MultiFormatWriter writer = new MultiFormatWriter();
        // 图像数据转换,使用了矩阵转换 参数顺序分别为:编码内容,编码类型,生成图片宽度,生成图片高度,设置参数
        BitMatrix bitMatrix = writer.encode(content, BarcodeFormat.CODE_128, width, height, hints);
        Path file = File.createTempFile("message_barcode_",".png").toPath();
        MatrixToImageWriter.writeToPath(bitMatrix, format, file);
        return file.toFile();
    }


    /**
     * 绘制条形码
     *
     * @param file   要编码的file
     * @return 返回base64编码后的字符串
     */
    public static String encodeImage(File file) throws Exception {
        FileInputStream fileInputStream = FileUtils.openInputStream(file);
        byte[] buffer = new byte[(int) file.length()];
        fileInputStream.read(buffer);
        fileInputStream.close();
        return Base64Utils.encodeToString(buffer);
    }


}

条形码生成工具类

posted @ 2019-12-10 11:04  Bevis  阅读(585)  评论(0编辑  收藏  举报