diff --git a/file.py b/file.py index ea1f218..ef3eff1 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..03db755 100644 --- a/web/api_Img.py +++ b/web/api_Img.py @@ -16,9 +16,9 @@ def img(bookid, index): # 图片接口 if isinstance(data, str): abort(404) if request.args.get("mini") == "yes": - data = file.thumbnail(data) + data = file.thumbnail(data,encode="jpg") else: - data = file.thumbnail(data,2400) + data = file.thumbnail(data,1500,) response = make_response(data) # 读取文件 del data response.headers.set("Content-Type", "image/Webp")