首先,我知道这个类似的 SO Question但我的问题略有不同,该问题的答案并没有解决我的问题。所以,我在这里创建一个新帖子。
我已经从http://zbar.sourceforge.net/download.html下载了 Zbar Installer并成功安装(没有错误消息)。
但是,当我运行以下脚本时,
import zbar
from PIL import Image
# create a reader
scanner = zbar.ImageScanner()
# configure the reader
scanner.parse_config('enable')
# obtain image data
pil = Image.open('zbartest2.png').convert('L')
width, height = pil.size
raw = pil.tostring()
# wrap image data
image = zbar.Image(width, height, 'Y800', raw)
# scan the image for barcodes
scanner.scan(image)
# extract results
for symbol in image:
# do something useful with results
print 'decoded', symbol.type, 'symbol', '"%s"' % symbol.data
# clean up
del(image)
它给了我一条错误消息,说 DLL 加载失败。
回溯(最近一次通话最后):
文件“D:\Profiles\e492507\Desktop\barcode reader\test.py”,第 1 行,在 import zbar ImportError: DLL load failed: 找不到指定的模块。
但与我上面提到的类似 SO 问题不同,当我在 python IDLE shell 中键入它时,它可以正常工作。
import zbar
zbar.version()
(0, 10)
是什么导致了问题,我该如何解决?
仅供参考:我在 windows Xp pro 32 位上使用 Python 2.7.3
更新:1
我发现如果我将脚本和图像复制到 python 目录C:\Python27\
中,它可以正常工作,没有任何问题。
但是,一旦我将脚本和图像移动到其他地方,我就会收到与上面发布的相同的错误消息。
我应该如何解决这个问题,以便只要条形码图像可用,我就可以在计算机的任何位置执行我的脚本?
更新:2 (仅供参考:与问题没有直接关系)
到目前为止,我无法使用我发现的所有方法来解决这个问题。所以,我提出了自己的愚蠢解决方案。
我将使用一个简单的表格来reportlab
代替,Barcodes
并相应地为单元格着色(黑色表示 1,白色表示 0)以表示二进制数字。
所以,数字 69 将是这样的
然后,我可以PIL
用来检测黑白方块并将其转换回二进制然后转换为十进制。仅供参考,我只处理十进制数字。没有字母或其他东西。我知道这很愚蠢,但绝望的时候需要采取绝望的措施:P