首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZXing FormatException解码ZXing生成QRCode

ZXing FormatException解码ZXing生成QRCode
EN

Stack Overflow用户
提问于 2017-10-23 19:20:02
回答 1查看 1.5K关注 0票数 0

encoding-and-decoding-random-byte-array-with-zxing派生的以下代码使用ZXing对字节数组(长度35和所有元素0)进行编码,然后再对其进行解码。

代码语言:javascript
复制
package zxing.sandpit;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.ChecksumException;
import com.google.zxing.FormatException;
import com.google.zxing.NotFoundException;
import com.google.zxing.RGBLuminanceSource;
import com.google.zxing.Result;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.qrcode.QRCodeReader;
import com.google.zxing.qrcode.QRCodeWriter;
import java.awt.image.BufferedImage;
import java.io.UnsupportedEncodingException;

public class Problem {

    public static void main(String[] args) throws UnsupportedEncodingException, WriterException, NotFoundException, ChecksumException, FormatException {
        byte[] bytes = new byte[35];
        String dataString = new String(bytes, "ISO-8859-1");
        QRCodeWriter writer = new QRCodeWriter();

        BitMatrix bitMatrix = writer.encode(
                dataString,
                BarcodeFormat.QR_CODE, 256, 256); 
        System.out.println("A");
        BufferedImage image = MatrixToImageWriter.toBufferedImage(bitMatrix);
        System.out.println("B");
        final Result result = new QRCodeReader().decode(
                new BinaryBitmap(new HybridBinarizer(new RGBLuminanceSource(image.getWidth(), image.getHeight(),
                        image.getRGB(0, 0, image.getWidth(), image.getHeight(), null, 0,
                                image.getWidth())))));

        System.out.println("C");
        byte[] bytes1 = result.getText().getBytes("ISO8859_1");

    }

}

对于所有长度小于35的数组,如果数组大小为35,则会抛出一个FormatException,并且从不打印C

代码语言:javascript
复制
A
B
Exception in thread "main" com.google.zxing.FormatException

我犯了什么错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-23 21:18:14

ZXing在生成的qr代码中检测错误的标记(假阳性)。这种情况会发生,特别是如果使用合成图像。尝试解码提示PURE_BARCODE。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46896962

复制
相关文章

相似问题

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