zxing 生成条形码去白边

版本:aliyun-sdk-oss-2.7 zxing-core 

public static void encode128(String contents,String path) {

        //配置条码参数
        Map<EncodeHintType,Object> hints = new HashMap<>();
        //设置条码两边空白边距为0,默认为10,如果宽度不是条码自动生成宽度的倍数则MARGIN无效
        hints.put(EncodeHintType.MARGIN, 0);

        //为了无边距,需设置宽度为条码自动生成规则的宽度
        int width = new Code128Writer().encode(contents).length;
        //前端可控制高度,不影响识别
        int height = 70;
        //条码放大倍数
        int codeMultiples = 1;
        //获取条码内容的宽,不含两边距,当EncodeHintType.MARGIN为0时即为条码宽度
        int codeWidth = width * codeMultiples;

        /* ZXing 条码边距及总宽度-默认计算规则
        codeWidth: 自定义的条码宽度
        fullWidth: 条码根据编码内容自动生成编码数组长度(new Code128Writer().encode(contents).length)+边距MARGIN
        outputWidth: codeWidth 与 fullWidth 的最大值
        //放大倍数(取整)
        int multiple = outputWidth / fullWidth;
        //边距
        int leftPadding = (outputWidth - (inputWidth * multiple)) / 2;
        生成条码长度为: outputWidth + 2 * leftPadding
         */

        try {

            // 图像数据转换,使用了矩阵转换 参数顺序分别为:编码内容,编码类型,生成图片宽度,生成图片高度,设置参数
            BitMatrix bitMatrix = new MultiFormatWriter().encode(contents,
                    BarcodeFormat.CODE_128, codeWidth, height, hints);
            MatrixToImageWriter.writeToStream(bitMatrix, "jpg", new FileOutputStream(new File(path)));
//            MatrixToImageWriter.writeToStream(bitMatrix, "png", new FileOutputStream("d:/code39.png"));

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用zxing生成条形码并展示条形码号的Java代码示例: ```java import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.imageio.ImageIO; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; import com.google.zxing.oned.Code128Writer; import com.google.zxing.client.j2se.MatrixToImageWriter; public class BarcodeGenerator { public static void main(String[] args) { String barcodeNumber = "1234567890"; // 条形码号 String filePath = "barcode.png"; // 保存条形码的文件路径 try { Map<EncodeHintType, Object> hints = new HashMap<>(); hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); // 字符编码 BitMatrix bitMatrix = new Code128Writer().encode(barcodeNumber, BarcodeFormat.CODE_128, 300, 150, hints); BufferedImage image = MatrixToImageWriter.toBufferedImage(bitMatrix); File file = new File(filePath); ImageIO.write(image, "png", file); System.out.println("条形码生成条形码号为:" + barcodeNumber); } catch (WriterException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } ``` 该代码使用Code128Writer生成CODE_128格式的条形码,设置了字符编码为UTF-8,生成了一个300x150像素的条形码图像,并将图像保存到文件中。在生成完成后,会在控制台输出条形码号。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值