TestServeController.py 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import json
  4. import time
  5. import urllib
  6. import uuid
  7. import boto3
  8. import threading
  9. import logging
  10. from boto3.session import Session
  11. from django.http import JsonResponse, HttpResponseRedirect, HttpResponse
  12. from django.views.generic.base import View
  13. from Model.models import Device_Info, Role, MenuModel
  14. from Object.ResponseObject import ResponseObject
  15. from Object.TokenObject import TokenObject
  16. from Object.UidTokenObject import UidTokenObject
  17. from Service.CommonService import CommonService
  18. from django.db.models import Q, F
  19. from time import strftime
  20. from Ansjer.config import BASE_DIR
  21. from Object import MergePic
  22. import os
  23. import base64
  24. class TestServeView(View):
  25. def get(self, request, *args, **kwargs):
  26. request.encoding = 'utf-8'
  27. operation = kwargs.get('operation')
  28. print("--------------------get")
  29. return self.validation(request.GET, request, operation)
  30. def post(self, request, *args, **kwargs):
  31. request.encoding = 'utf-8'
  32. operation = kwargs.get('operation')
  33. print("--------------------post")
  34. return self.validation(request.POST, request, operation)
  35. def validation(self, request_dict, request, operation):
  36. language = request_dict.get('language', 'en')
  37. response = ResponseObject(language, 'pc')
  38. if operation == '??':
  39. return 0
  40. else:
  41. tko = TokenObject(
  42. request.META.get('HTTP_AUTHORIZATION'),
  43. returntpye='pc')
  44. # if tko.code != 0:
  45. # return response.json(tko.code)
  46. response.lang = tko.lang
  47. userID = tko.userID
  48. if operation == 'AItest':
  49. return self.AItest(userID, request, request_dict, response)
  50. if operation == 'doEdit':
  51. return self.doEdit(userID, request_dict, response)
  52. if operation == 'doDelete':
  53. return self.doDelete(userID, request_dict, response)
  54. else:
  55. return response.json(404)
  56. def AItest(self, userID, request, request_dict, response):
  57. # print("--------------request_dict")
  58. # print(request_dict)
  59. file_post_one = request_dict.get('file_one', None)
  60. file_post = file_post_one.replace(' ','+')
  61. # file_decode = base64.b64decode(file_post)
  62. file_post_two = request_dict.get('file_two', None)
  63. file_post_two = file_post_two.replace(' ', '+')
  64. # file_decode_two = base64.b64decode(file_post_two)
  65. now_time = int(time.time())
  66. dir_path = os.path.join(BASE_DIR, 'static/ai/')
  67. if not os.path.exists(dir_path):
  68. os.makedirs(dir_path)
  69. file_path_one = dir_path + 'one'+ str(now_time) + '.jpeg'
  70. file_path_two = dir_path + 'two'+ str(now_time) + '.jpeg'
  71. file_list = ['one','two']
  72. for index in file_list:
  73. file_path = dir_path + index + str(now_time) + '.jpeg'
  74. with open(file_path, 'wb') as f:
  75. # file_byte = file_post.encode('utf-8')
  76. f.write(file_decode)
  77. return HttpResponse("seccess")
  78. file2 = request.FILES.get('file_one', None)
  79. file3 = request.FILES.get('file_two', None)
  80. file4 = request.FILES.get('file_three', None)
  81. print('--------------------------file')
  82. print(file)
  83. print('===========================post_file')
  84. print(file_post)
  85. post_file_list = [file, file2, file3, file4]
  86. file_list = []
  87. for index in range(len(post_file_list)):
  88. if post_file_list[index]:
  89. file_list.append(post_file_list[index])
  90. del post_file_list
  91. if len(file_list) > 1:
  92. merge = []
  93. now_time = int(time.time())
  94. dir_path = os.path.join(BASE_DIR, 'static/', str(now_time))
  95. if not os.path.exists(dir_path):
  96. os.makedirs(dir_path)
  97. for item in file_list:
  98. if hasattr(item, 'name'):
  99. file_path = os.path.join(dir_path, item.name)
  100. with open(file_path, 'wb') as f:
  101. for c in item.chunks():
  102. f.write(c)
  103. merge.append(file_path)
  104. image_size = 500 # 每张小图片的大小
  105. image_colnum = 2 # 合并成一张图后,一行有几个小图
  106. MergePic.merge_images(dir_path, image_size, image_colnum)
  107. # return HttpResponse(dir_path + '.jpg')
  108. photo = open(dir_path + '.jpg', 'rb')
  109. else:
  110. photo = file_list[0]
  111. maxLabels = int(request_dict.get('maxLabels', 10))
  112. minConfidence = float(request_dict.get('minConfidence', 30))
  113. try:
  114. client = boto3.client(
  115. 'rekognition',
  116. aws_access_key_id='AKIA2E67UIMD6JD6TN3J',
  117. aws_secret_access_key='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',
  118. region_name='us-east-1')
  119. # doc:
  120. # https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rekognition.html#Rekognition.Client.detect_labels
  121. rekognition_res = client.detect_labels(
  122. Image={
  123. 'Bytes': photo.read()},
  124. MaxLabels=maxLabels,
  125. MinConfidence=minConfidence)
  126. print('rekognition_res: ', rekognition_res)
  127. return response.json(0, {'rekognition_res': rekognition_res})
  128. except Exception as e:
  129. print(e)
  130. return response.json(500, repr(e))
  131. files1 = request.FILES.get('image1')
  132. files2 = request.FILES.get('image2')
  133. files3 = request.FILES.get('image3')
  134. files4 = request.FILES.get('image4')
  135. file_list = [files1,files2,files3,files4]
  136. merge = []
  137. now_time = int(time.time())
  138. dir_path = os.path.join(BASE_DIR,'static/', str(now_time))
  139. if not os.path.exists(dir_path):
  140. os.makedirs(dir_path)
  141. for item in file_list:
  142. if hasattr(item,'name'):
  143. file_path = os.path.join(dir_path,item.name)
  144. with open(file_path, 'wb') as f:
  145. for c in item.chunks():
  146. f.write(c)
  147. merge.append(file_path)
  148. image_size = 500 # 每张小图片的大小
  149. image_colnum = 2 # 合并成一张图后,一行有几个小图
  150. MergePic.merge_images(dir_path, image_size, image_colnum)
  151. files = open(dir_path+'.jpg','rb')
  152. # return HttpResponse(files.read())
  153. labels = int(request_dict.get('labels',5))
  154. minConfidence = int(request_dict.get('minConfidence',99))
  155. if not files:
  156. return HttpResponse('请上传图片!!!!')
  157. client = boto3.client('rekognition', aws_access_key_id='AKIA2E67UIMD6JD6TN3J',aws_secret_access_key='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',region_name='us-east-1')
  158. # image = open('E:/photo/a615fa40b8c476bab0f6eeb332e62a5a-1000.jpg', "rb")
  159. response = client.detect_labels(Image={'Bytes':files.read()},MaxLabels=labels,MinConfidence=minConfidence)
  160. # for obj in response['Labels']:
  161. # exit(obj)
  162. # if obj['Name'] == 'Person':
  163. # jsonstr = json.dumps(obj)
  164. return HttpResponse(json.dumps(response, ensure_ascii=False),
  165. content_type="application/json,charset=utf-8")