k-g*_*g-f 43 image django-views
我需要安全地向经过验证的用户提供图像(即它们不能作为静态文件提供).我目前在我的Django项目中有以下Python视图,但它似乎效率低下.有什么想法更好的方法吗?
def secureImage(request,imagePath):
response = HttpResponse(mimetype="image/png")
img = Image.open(imagePath)
img.save(response,'png')
return response
Run Code Online (Sandbox Code Playgroud)
(图像从PIL导入.)
Ste*_*Nch 76
好吧,有时需要重新编码(即在保持原始状态不变的情况下在图像上应用水印),但对于最简单的情况,您可以使用:
try:
with open(valid_image, "rb") as f:
return HttpResponse(f.read(), content_type="image/jpeg")
except IOError:
red = Image.new('RGBA', (1, 1), (255,0,0,0))
response = HttpResponse(content_type="image/jpeg")
red.save(response, "JPEG")
return response
Run Code Online (Sandbox Code Playgroud)
Sum*_*ran 10
利用FileResponse
更干净的方式,这里我们不必担心Content-Length和Content-Type标头,它们是通过猜测 的内容自动添加的open()。
from django.http import FileResponse
def send_file(response):
img = open('media/hello.jpg', 'rb')
response = FileResponse(img)
return response
Run Code Online (Sandbox Code Playgroud)