使用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 .es_connect import *
|
||||
from openai import OpenAI
|
||||
from PIL import Image
|
||||
|
||||
|
||||
@require_http_methods(["GET", "POST"])
|
||||
@@ -398,10 +399,29 @@ def confirm(request):
|
||||
return JsonResponse({"status": "error", "message": "数据不能为空"}, status=400)
|
||||
|
||||
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 = {
|
||||
"writer_id": str(request.session.get("user_id")),
|
||||
"data": json_to_string(edited),
|
||||
"image": image_rel,
|
||||
"image": final_image_rel,
|
||||
}
|
||||
|
||||
ok = insert_data(to_store)
|
||||
|
||||
Reference in New Issue
Block a user