From 64b2cf06e3adb015877cf645cdc5d640b80847eb Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 27 Jan 2022 13:21:12 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E6=88=90=E7=AD=BE=E5=90=8D=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/utils/view.py | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/hb_server/utils/view.py b/hb_server/utils/view.py index e7b3ca5..25dc7d5 100644 --- a/hb_server/utils/view.py +++ b/hb_server/utils/view.py @@ -6,10 +6,9 @@ from PIL import Image from django.conf import settings from rest_framework import status from datetime import datetime -import os -import uuid import cv2 from server.settings import BASE_DIR +import numpy as np # class UploadFileView(APIView): # permission_classes = [IsAuthenticated] @@ -39,16 +38,31 @@ class GenSignature(APIView): def post(self, request, *args, **kwargs): path = (BASE_DIR + request.data['path']).replace('\\', '/') - image = cv2.imread(path, cv2.IMREAD_UNCHANGED) - size = image.shape - for i in range(size[0]): - for j in range(size[1]): - if image[i][j][0]>100 and image[i][j][1]>100 and image[i][j][2]>100: - image[i][j][3] = 0 - else: - image[i][j][0],image[i][j][1],image[i][j][2] = 0,0,0 - cv2.imwrite(path,image) - return Response(request.data, status=status.HTTP_200_OK) + try: + image = cv2.imread(path, cv2.IMREAD_UNCHANGED) + size = image.shape + width = size[0] # 宽度 + height = size[1] # 高度 + if size[2] != 4: # 判断 + background = np.zeros((size[0], size[1], 4)) + for yh in range(height): + for xw in range(width): + background[xw, yh, :3] = image[xw, yh] + background[xw, yh, 3] = 255 + image = background + size = image.shape + for i in range(size[0]): + for j in range(size[1]): + if image[i][j][0]>100 and image[i][j][1]>100 and image[i][j][2]>100: + image[i][j][3] = 0 + else: + image[i][j][0],image[i][j][1],image[i][j][2] = 0,0,0 + cv2.imwrite(path,image) + return Response(request.data, status=status.HTTP_200_OK) + except: + return Response('签名照处理失败,请重新上传', + status=status.HTTP_400_BAD_REQUEST) + import time class UpdateDevelop(APIView):