feat:新增图像编码设置

This commit is contained in:
Kakune55 2024-05-10 17:28:03 +08:00
parent c9605c392f
commit d753e7cad4
3 changed files with 15 additions and 6 deletions

View File

@ -14,4 +14,9 @@ path=./data/metadata.db
[file] [file]
inputdir=./input inputdir=./input
storedir=./data/file storedir=./data/file
tmpdir=./data/tmp tmpdir=./data/tmp
[img]
encode=jpg
miniSize=400
fullSize=1000

View File

@ -79,7 +79,7 @@ def thumbnail(input, minSize: int = 600, encode:str="webp"):
img = cv2.resize(img, newshape) img = cv2.resize(img, newshape)
if encode == "webp": if encode == "webp":
success, encoded_image = cv2.imencode(".webp", img, [cv2.IMWRITE_WEBP_QUALITY, 75]) success, encoded_image = cv2.imencode(".webp", img, [cv2.IMWRITE_WEBP_QUALITY, 75])
elif encode == "jpg": elif encode == "jpg" or "jpeg":
success, encoded_image = cv2.imencode(".jpg", img, [cv2.IMWRITE_JPEG_QUALITY, 75]) success, encoded_image = cv2.imencode(".jpg", img, [cv2.IMWRITE_JPEG_QUALITY, 75])
else: else:
return input return input

View File

@ -1,9 +1,13 @@
from flask import * from flask import *
from flask import Blueprint from flask import Blueprint
import db.file , file, gc import db.file , file, gc , app_conf
api_Img_bp = Blueprint("api_Img_bp", __name__) api_Img_bp = Blueprint("api_Img_bp", __name__)
conf = app_conf.conf()
imgencode = conf.get("img", "encode")
miniSize = conf.getint("img", "miniSize")
fullSize = conf.getint("img", "fullSize")
@api_Img_bp.route("/api/img/<bookid>/<index>") @api_Img_bp.route("/api/img/<bookid>/<index>")
def img(bookid, index): # 图片接口 def img(bookid, index): # 图片接口
@ -16,12 +20,12 @@ def img(bookid, index): # 图片接口
if isinstance(data, str): if isinstance(data, str):
abort(404) abort(404)
if request.args.get("mini") == "yes": if request.args.get("mini") == "yes":
data = file.thumbnail(data,encode="jpg") data = file.thumbnail(data,miniSize,encode=imgencode)
else: else:
data = file.thumbnail(data,1500) data = file.thumbnail(data,fullSize,encode=imgencode)
response = make_response(data) # 读取文件 response = make_response(data) # 读取文件
del data del data
response.headers.set("Content-Type", "image/Webp") response.headers.set("Content-Type",f"image/{imgencode}")
response.headers.set("Content-Disposition", "inline", filename=filename) response.headers.set("Content-Disposition", "inline", filename=filename)
gc.collect() gc.collect()
return response return response