我使用zxing库生成了一个QRCode。
QRCode qrcode = QRCode.from("Encoding string").withSize(17,17).to(ImageType.PNG);
ByteArrayOutputStream out = QRCode.from(output.toString()).withSize(10, 10).to(ImageType.PNG).stream();
FileOutputStream fout = new FileOutputStream(new File("D:\\QR_Code.JPG"));
fout.write(out.toByteArray());
fout.flush();
fout.close();它工作得很好,但现在我想解码生成的QRCode。可以使用zxing从图像中解码QRCode吗?如果是这样,你能给我一个提示怎么做吗,因为我还没有找到合适的类或方法。提前谢谢。
发布于 2016-05-25 18:51:53
以下是您可以执行的操作:
要从BinaryBitmap
QRCodeReader实例,需要实例化一个HybridBinarizer并将其作为构造函数参数传递来创建您的BinaryBitmapHybridBinarizer需要一个qrcode实例查看BufferedImageLuminanceSource下面是一个从缓冲图像中解码数据的示例:
public static String qrDecodeFromImage(BufferedImage img) {
if(img!=null) {
LuminanceSource bfImgLuminanceSource = new BufferedImageLuminanceSource(img);
BinaryBitmap binaryBmp = new BinaryBitmap(new HybridBinarizer(bfImgLuminanceSource));
QRCodeReader qrReader = new QRCodeReader();
Result result;
try {
result = qrReader.decode(binaryBmp);
return result.getText();
} catch (NotFoundException e) {} catch (ChecksumException e) {} catch (FormatException e) {}
}
return null;
}发布于 2015-08-05 04:45:55
您需要将ZXing项目包含在您的项目中(源代码等)。
然后,您可以使用各种ZXing类来执行解码/编码等操作:
查看这些类:BinaryBitmap、QRCodeReader、ParsedResult、ResultParser,并尝试如下所示:
Bitmap b = ...;//TODO: create a bitmap from your source...
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(new RGBLuminanceSource(b)));
Result result = null;
QRCodeReader reader = new QRCodeReader();
try {
result = reader.decode(bitmap);
ParsedResult parsedResult = ResultParser.parseResult(result);
//TODO: use parsedResult
}
catch(OutOfMemoryError e) {
}
catch(Exception e) {
}https://stackoverflow.com/questions/31816610
复制相似问题