From c49cee4c30494c74ab6c0fe12a6c7f421e57c233 Mon Sep 17 00:00:00 2001 From: Kakune55 Date: Thu, 9 May 2024 12:17:16 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=87=8F=E5=B0=8F=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E5=88=86=E8=BE=A8=E7=8E=87=20=E4=BF=AE=E5=A4=8D=E5=B0=8F?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E8=A2=AB=E6=94=BE=E5=A4=A7=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- file.py | 18 ++++++++++++------ web/api_Img.py | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/file.py b/file.py index ea1f218..6fd7511 100644 --- a/file.py +++ b/file.py @@ -67,14 +67,20 @@ def raedZip(bookid: str, index: int): return str(e), "" -def thumbnail(input, minSize: int = 600): +def thumbnail(input, minSize: int = 600, encode:str="webp"): img = cv2.imdecode(np.frombuffer(input, np.uint8), cv2.IMREAD_COLOR) height = img.shape[0] # 图片高度 width = img.shape[1] # 图片宽度 - if height > width: - newshape = (minSize, int(minSize / width * height)) + if minSize < np.amin(height,width): + if height > width: + newshape = (minSize, int(minSize / width * height)) + else: + newshape = (int(minSize / height * width), minSize) + img = cv2.resize(img, newshape) + if encode == "webp": + success, encoded_image = cv2.imencode(".webp", img, [cv2.IMWRITE_WEBP_QUALITY, 75]) + elif encode == "jpg": + success, encoded_image = cv2.imencode(".jpg", img, [cv2.IMWRITE_JPEG_QUALITY, 75]) else: - newshape = (int(minSize / height * width), minSize) - img = cv2.resize(img, newshape) - success, encoded_image = cv2.imencode(".webp", img, [cv2.IMWRITE_WEBP_QUALITY, 75]) + return input return encoded_image.tobytes() diff --git a/web/api_Img.py b/web/api_Img.py index 4830b0e..6d92d37 100644 --- a/web/api_Img.py +++ b/web/api_Img.py @@ -18,7 +18,7 @@ def img(bookid, index): # 图片接口 if request.args.get("mini") == "yes": data = file.thumbnail(data) else: - data = file.thumbnail(data,2400) + data = file.thumbnail(data,1500) response = make_response(data) # 读取文件 del data response.headers.set("Content-Type", "image/Webp")