识别二维码需要用到zbar库,在win10上安装非官方的集成包没有问题,能import到zbar库
但是由于我们服务器是windows server 2003 64bit 那么问题就来了,环境、环境、头疼的环境,安装zbar python库的时候遇到各种坑,
后来采用了一种委婉的解决方式,就是安装zbar的windows程序,用调用exe的方式来识别验证码
# 通过调用zbar的exe来识别二维码,前提是要先安装zbar的windows程序,找到安装目录下的zbarimg.exe
def check_qr_code(self, img_path):
try:
process = subprocess.check_output(
["C:\\Program Files (x86)\\ZBar\\bin\\zbarimg", '-q', img_path], shell=True,
stderr=subprocess.STDOUT)
result = process.decode('gbk')
print result
if result.find("QR-Code:") >= 0:
return True
except subprocess.CalledProcessError as e:
# raise RuntimeError(
# "command '{}' return with error (code {}): {}".format(e.cmd, e.returncode, e.output.decode('gbk')))
return False
# 通过调用zbar的python库来识别二维码,前提是要先安装zbar插件,windows环境安装可能会有很多地雷
def get_qr_code(self, img_path):
data = ''
try :
scanner = zbar.ImageScanner()
scanner.parse_config("enable")
pil = Image.open(img_path).convert('L')
width, height = pil.size
# raw = pil.tostring()
raw = pil.tobytes()
image = zbar.Image(width, height, 'Y800', raw)
scanner.scan(image)
for symbol in image:
data += symbol.data
del (image)
except Exception, e:
print "get_qr_code exception:" + e.__str__()
finally:
return data