Android中实现绘制PDF417截短码(PDF417Truncated)

1.公司需要在Android 手机中实现绘制PDF417截短码格式的二维码,这种码在工业生产中常用,但是网上关于PDF417Truncated的资料非常少,他其实是PDF417 的一种变体,将非必要信息删除掉,数据也可以正常显示,正常googlZxing 支持PDF417码,但是PDF417截短码不支持,需要我们调整绘制参数修改。

  1. 首先我引入的库文件
            implementation "com.google.zxing.core:zxing:3.5.3"
            implementation "com.journeyapps.zxing-android-embedded:4.3.0"

3.分装的方法: 将参数引入并生成bitmap 返回:

     public static Bitmap generatePDF417Truncated(String data, int width, int height) {
        try {
            // 设置编码参数
            Map<EncodeHintType, Object> hints = new EnumMap<>(EncodeHintType.class);
            hints.put(EncodeHintType.PDF417_COMPACT, true);  // 启用截短模式
            hints.put(EncodeHintType.MARGIN, 0);  // 设置边距
            hints.put(EncodeHintType.PDF417_DIMENSIONS, new Dimensions(1, 3, 1, 4000));
            hints.put(EncodeHintType.PDF417_COMPACTION, Compaction.BYTE);
            hints.put(EncodeHintType.ERROR_CORRECTION, 2);  // 设置错误纠正级别

            // 生成PDF417 BitMatrix
            MultiFormatWriter writer = new MultiFormatWriter();
            BitMatrix bitMatrix = writer.encode(data, BarcodeFormat.PDF_417, width, height, hints);

            // 创建Bitmap
            Bitmap bitmap = Bitmap.createBitmap(bitMatrix.getWidth(), bitMatrix.getHeight(), Bitmap.Config.ARGB_8888);
            for (int x = 0; x < bitMatrix.getWidth(); x++) {
                for (int y = 0; y < bitMatrix.getHeight(); y++) {
                    bitmap.setPixel(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);
                }
            }
            return bitmap;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }


//调用方法
generatePDF417Truncated("截短码数据", 480,470));
微信图片_20240903162355.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容