:art: Support pywe-wxa-cv to scanQrcode

Brightcells лет %!s(int64=5): %!d(string=назад)
Родитель
Сommit
2c09b8b5b9
5 измененных файлов с 55 добавлено и 4 удалено
  1. 11 2
      kodo/oauth_settings.py
  2. 3 0
      kodo/settings.py
  3. 1 0
      requirements_pywe.txt
  4. 9 2
      utils/zbar/zbar.py
  5. 31 0
      utils/zbar/zbar2.py

+ 11 - 2
kodo/oauth_settings.py

@@ -121,8 +121,17 @@ def DJANGO_FILE_UPLOAD_CALLBACK_FUNC(request, file_path=None, file_url=None):
121 121
         file_path = os.path.join(settings.MEDIA_ROOT, file_path)
122 122
         zbars = zbar(file_path)
123 123
 
124
-        for i in range(len(zbars)):
125
-            zbars[i] = zbars[i].strip()
124
+        return {
125
+            'zbars': zbars,
126
+        }
127
+
128
+    zbar2 = int(request.POST.get('zbar2', 0))
129
+    if zbar2:
130
+        import os
131
+        from utils.zbar.zbar2 import zbar2
132
+
133
+        file_path = os.path.join(settings.MEDIA_ROOT, file_path)
134
+        zbars = zbar2(file_path)
126 135
 
127 136
         return {
128 137
             'zbars': zbars,

+ 3 - 0
kodo/settings.py

@@ -412,6 +412,9 @@ COMPONENT_CALLBACK_CONFIG = {
412 412
     'tousername': 'brand_id',
413 413
 }
414 414
 
415
+# 测试文件
416
+TESTING_ZBAR = os.path.join(BASE_DIR, 'utils/zbar/zbar.jpg').replace('\\', '/')
417
+
415 418
 # 开发调试相关配置
416 419
 if DEBUG:
417 420
     try:

+ 1 - 0
requirements_pywe.txt

@@ -8,4 +8,5 @@ pywe-pay==1.0.12
8 8
 pywe-pay-notify==1.0.4
9 9
 pywe-response==1.0.1
10 10
 pywe-sign==1.1.0
11
+pywe-wxa-cv==1.0.0
11 12
 pywe-xml==1.0.6

+ 9 - 2
utils/zbar/zbar.py

@@ -1,5 +1,6 @@
1 1
 # -*- coding: utf-8 -*-
2 2
 
3
+from django.conf import settings
3 4
 from PIL import Image, ImageEnhance
4 5
 from pyzbar import pyzbar
5 6
 
@@ -33,8 +34,14 @@ def zbar(path):
33 34
     #     barcodeData = barcode.data.decode("utf-8")
34 35
     #     print(barcodeData)
35 36
 
36
-    return [bar.data.decode('utf-8') for bar in barcodes]
37
+    return [bar.data.decode('utf-8').strip() for bar in barcodes]
38
+
39
+
40
+def test_zbar():
41
+    # In[4]: test_zbar()
42
+    # [u'189415']
43
+    print zbar(settings.TESTING_ZBAR)
37 44
 
38 45
 
39 46
 if __name__ == '__main__':
40
-    print zbar('zbar.jpg')
47
+    test_zbar()

+ 31 - 0
utils/zbar/zbar2.py

@@ -0,0 +1,31 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+from django.conf import settings
4
+from pywe_storage import RedisStorage
5
+from pywe_wxa_cv import cv_qrcode
6
+
7
+from utils.redis.connect import r
8
+
9
+
10
+WECHAT = settings.WECHAT
11
+
12
+
13
+def zbar2(path):
14
+    wxcfg = WECHAT.get('MINIAPP', {})
15
+
16
+    appid = wxcfg.get('appID')
17
+    secret = wxcfg.get('appsecret')
18
+
19
+    # In[5]: test_zbar2()
20
+    # {u'code_results': [{u'type_name': u'CODE_39', u'data': u'189415'}], u'img_size': {u'h': 1440, u'w': 1080}, u'errcode': 0, u'errmsg': u'ok'}
21
+    img_infos = cv_qrcode(img_file_path=path, appid=appid, secret=secret, storage=RedisStorage(r))
22
+
23
+    code_results = img_infos.get('code_results', [])
24
+
25
+    return [code.get('data', '').strip() for code in code_results]
26
+
27
+
28
+def test_zbar2():
29
+    # In[5]: test_zbar()
30
+    # [u'189415']
31
+    print zbar2(settings.TESTING_ZBAR)