首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IndexOutOfBounds编码PDF417时

IndexOutOfBounds编码PDF417时
EN

Stack Overflow用户
提问于 2021-09-09 11:37:39
回答 1查看 126关注 0票数 1

我试图对一个PDF417进行编码,每当我将PDF417_COMPACTION设置为Compaction.TEXT时,就会出现以下崩溃:

代码语言:javascript
复制
java.lang.ArrayIndexOutOfBoundsException: length=128; index=8226
    at com.google.zxing.pdf417.encoder.PDF417HighLevelEncoder.isMixed(PDF417HighLevelEncoder.java:456)
    at com.google.zxing.pdf417.encoder.PDF417HighLevelEncoder.encodeText(PDF417HighLevelEncoder.java:298)
    at com.google.zxing.pdf417.encoder.PDF417HighLevelEncoder.encodeHighLevel(PDF417HighLevelEncoder.java:185)
    at com.google.zxing.pdf417.encoder.PDF417.generateBarcodeLogic(PDF417.java:649)
    at com.google.zxing.pdf417.PDF417Writer.bitMatrixFromEncoder(PDF417Writer.java:107)
    at com.google.zxing.pdf417.PDF417Writer.encode(PDF417Writer.java:87)
    at com.google.zxing.MultiFormatWriter.encode(MultiFormatWriter.java:102)

下面是我如何创建条形码的代码:

代码语言:javascript
复制
var hints: MutableMap<EncodeHintType, Any>?

hints = EnumMap<EncodeHintType, Any>(EncodeHintType::class.java)

hints[EncodeHintType.CHARACTER_SET] = "UTF-8" 
hints[EncodeHintType.ERROR_CORRECTION] = 6
hints[EncodeHintType.PDF417_COMPACTION] = Compaction.TEXT

val writer = MultiFormatWriter()
val result: BitMatrix
try {
    result = writer.encode(contents, format, img_width, img_height, hints)
} catch (iae: WriterException) {
    // Unsupported format
    return null
}

这是个bug还是我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-09 11:44:15

你的img_width是什么,img_height?这是我的解决方案,您需要使用realWidth =bitMatrix.getWidth().:

代码语言:javascript
复制
BitMatrix bitMatrix = new MultiFormatWriter().encode(mContent, barcodeFormat, mWidth, mHeight, hintsMap);
    int realWidth = bitMatrix.getWidth();
    int realHeight = bitMatrix.getHeight();

    int[] pixels = new int[realWidth * realHeight];
    for (int i = 0; i < realHeight; i++) {
        for (int j = 0; j < realWidth; j++) {
            if (bitMatrix.get(j, i)) {
                pixels[i * realWidth + j] = 0x00000000;
            } else {
                pixels[i * realWidth + j] = 0xffffffff;
            }
        }
    }
    Bitmap bitmap = Bitmap.createBitmap(pixels, 0, realWidth, realWidth, realHeight, Bitmap.Config.RGB_565);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69117507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档