如何使用python-qrtools/ZBar获得QR/条形码的编码风格类型



在我的Ubuntu服务器上,我已经安装了Python -qrtools软件包(它使用zbar),使用sudo apt-get install python-qrtools在Python中解码qr码和条形码的图像,如下所示:

>>> qr = qrtools.QR()
>>> qr.decode('the_qrcode_or_barcode_image.jpg')
True
>>> print qr.data
Hello! :)

这个工作很好。

我现在想要存储这些数据并在以后的时间点重新生成图像。但问题是,我不知道原始图像是qr码还是某种条形码。我检查了qr对象的所有属性,但它们似乎都没有给我编码样式(QR/bar/other)的类型。

在这个SO线程中,它被描述为ZBar确实给出了编码风格的类型,但它只给出了Objective-C中的一个例子,加上我不确定这是否实际上是我正在寻找的答案。

有没有人知道我如何在Python中找到编码风格的类型(所以qr码/条形码/其他)(最好使用Python -qrtools包)?如果不是在Python中,有没有Linux命令行工具可以找到这个?欢迎所有的建议!

查看qrtools的源代码,我看不到任何获得类型的方法,但是有一个zbar python库,基于scan_image示例,下面的代码似乎可以做你想做的:

import zbar
import Image
scanner = zbar.ImageScanner()
scanner.parse_config('enable')
img = Image.open("br.png").convert('L')
width, height = img.size
stream = zbar.Image(width, height, 'Y800', img.tostring())
scanner.scan(stream)
for symbol in stream:
    print 'decoded', symbol.type, 'symbol', '"%s"' % symbol.data

使用我从网上随机抓取的条形码:

decoded UPCA symbol "123456789012"

使用此qr码输出:

 decoded QRCODE symbol "http://www.reichmann-racing.de"

最新更新