使用webp来储存图片

This commit is contained in:
2025-11-15 10:12:59 +08:00
parent ca9da9f7aa
commit e1152bdc86

View File

@@ -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)