将图像写入Django HttpResponse()的最佳方式 [英] Best way to write an image to a Django HttpResponse()

查看:954
本文介绍了将图像写入Django HttpResponse()的最佳方式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要安全地向验证的用户提供图像(即它们不能作为静态文件)。我目前在我的Django项目中有以下Python视图,但似乎效率低下。任何想法更好的方法?

  def secureImage(request,imagePath):
response = HttpResponse(mimetype =图像/ png)
img = Image.open(imagePath)
img.save(response,'png')
返回响应
pre>

(图片是从PIL导入的)

解决方案

需要重新编码(即在图像上应用水印同时保持原稿不变),但是对于您可以使用的最简单的情况:

 $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 
$除了IOError:
red = Image.new('RGBA',(1,1),(255,0,0,0))
response = HttpResponse(content_type =image / jpeg)
red.save(response,JPEG)
return response


I need to serve images securely to validated users only (i.e. they can't be served as static files). I currently have the following Python view in my Django project, but it seems inefficient. Any ideas for a better way?

def secureImage(request,imagePath):
    response = HttpResponse(mimetype="image/png")
    img = Image.open(imagePath)
    img.save(response,'png')
    return response

(Image is imported from PIL.)

解决方案

Well, re-encoding is needed sometimes (i.e. applying an watermark over an image while keeping the original untouched), but for the most simple of cases you can use:

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

这篇关于将图像写入Django HttpResponse()的最佳方式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆