如何使用PIL Image在Django网页中输出图像

时间:2012-09-11 18:04:38

标签: python django python-imaging-library

我使用Image.new在django视图中创建一个图像对象, 我想在网页上显示它。

x = Image.new('RGB',(400,400)) 返回HttpResponse(x.show(),mimetype =“image / png”)

不起作用。

如何将图像对象转换为图像原始二进制文件?

2 个答案:

答案 0 :(得分:2)

您可以将base64图像嵌入<img src=,这样您就可以尝试将PIL图像转换为base64。

from PIL import Image
import StringIO

x = Image.new('RGB',(400,400))
output = StringIO.StringIO()
x.save(output, "PNG")
contents = output.getvalue().encode("base64")
output.close()
return HttpResponse('<img src="data:image/png;base64,' + contents + ' />')

答案 1 :(得分:1)

您有两个选择:

  1. 将您的图片保存在您的网络服务器可以为其提供服务的某个地方
  2. 使用base64对其进行编码并直接显示
  3. 第一个选项是首选。代码应该是这样的:

    x = Image.new() # The same stuff than yours
    x.save(MEDIA_ROOT + "/generated_images/the_name_of_the_image.jpg", "JPEG")
    return HttpResponse(
      "<img src="%s/%s />" % (MEDIA_URL, "/generated_images/the_name_of_the_image.jpg")
    )
    

    如果需要,可以在base64中阅读(参见:Encoding an image file with base64) 并显示它:

    base64_img = get_base_64()
    return HttpResponse('<img alt="Embedded Image" src="data:image/jpeg;base64," % base64_img />')