用zxing生成没有白边的条形码

参考:zxing设置条码两边空白(EncodeHintType.MARGIN)无效的分析

阅读上方源码解析后得到思路:
白边的大小: int leftPadding = (outputWidth - (inputWidth * multiple)) / 2;
要让leftpadding为0,需要让传入的width和code.length是整数倍的关系,
那么传入expectWidth和maxWidth,计算得到一个没有白边的宽度. 用这个宽度去生成条形码,一定没有白边
高度不影响白边生成,随意传入.

封装后的代码:

/** @param context 尽量用activity,以防使用过屏幕适配工具类后application context 和activity里的desplaymetric里的dpidensity不一致
     @param expectWidth 期望的宽度
     @param maxWidth 最大允许宽度
     * @param contents 生成条形码的内容
     * @param height
     * @return
     */
    public static Bitmap getBarCodeWithoutPadding(Context context, int expectWidth,int maxWidth,int height,String contents){

        int width = CommonUtils.dp2px(context, expectWidth);
        int widthMax = CommonUtils.dp2px(context, maxWidth);
        int heightExpect = CommonUtils.dp2px(context, height);

        int realWidth = getBarCodeNoPaddingWidth(width,contents,widthMax);

        return syncEncodeBarcode(contents, realWidth, heightExpect,0);
    }

计算生成无白边的宽度:

private static int getBarCodeNoPaddingWidth(
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值