使用webp来储存图片
This commit is contained in:
@@ -14,6 +14,7 @@ from django.views.decorators.csrf import ensure_csrf_cookie
|
|||||||
from django.views.decorators.csrf import csrf_exempt, ensure_csrf_cookie
|
from django.views.decorators.csrf import csrf_exempt, ensure_csrf_cookie
|
||||||
from .es_connect import *
|
from .es_connect import *
|
||||||
from openai import OpenAI
|
from openai import OpenAI
|
||||||
|
from PIL import Image
|
||||||
|
|
||||||
|
|
||||||
@require_http_methods(["GET", "POST"])
|
@require_http_methods(["GET", "POST"])
|
||||||
@@ -398,10 +399,29 @@ def confirm(request):
|
|||||||
return JsonResponse({"status": "error", "message": "数据不能为空"}, status=400)
|
return JsonResponse({"status": "error", "message": "数据不能为空"}, status=400)
|
||||||
|
|
||||||
ensure_type_in_list(edited.get("数据类型"))
|
ensure_type_in_list(edited.get("数据类型"))
|
||||||
|
final_image_rel = image_rel
|
||||||
|
try:
|
||||||
|
if image_rel:
|
||||||
|
images_dir = os.path.join(settings.MEDIA_ROOT, "images")
|
||||||
|
os.makedirs(images_dir, exist_ok=True)
|
||||||
|
src_abs = os.path.join(settings.MEDIA_ROOT, image_rel)
|
||||||
|
base = os.path.splitext(os.path.basename(image_rel))[0]
|
||||||
|
webp_name = base + ".webp"
|
||||||
|
webp_abs = os.path.join(images_dir, webp_name)
|
||||||
|
with Image.open(src_abs) as im:
|
||||||
|
if im.mode in ("RGBA", "LA", "P"):
|
||||||
|
im = im.convert("RGBA")
|
||||||
|
else:
|
||||||
|
im = im.convert("RGB")
|
||||||
|
im.save(webp_abs, format="WEBP", quality=80)
|
||||||
|
final_image_rel = f"images/{webp_name}"
|
||||||
|
except Exception:
|
||||||
|
final_image_rel = image_rel
|
||||||
|
|
||||||
to_store = {
|
to_store = {
|
||||||
"writer_id": str(request.session.get("user_id")),
|
"writer_id": str(request.session.get("user_id")),
|
||||||
"data": json_to_string(edited),
|
"data": json_to_string(edited),
|
||||||
"image": image_rel,
|
"image": final_image_rel,
|
||||||
}
|
}
|
||||||
|
|
||||||
ok = insert_data(to_store)
|
ok = insert_data(to_store)
|
||||||
|
|||||||
Reference in New Issue
Block a user