1

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

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

不起作用。

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

4

2 回答 2

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 + ' />')
于 2012-09-11T18:17:03.590 回答
1

您有 2 个选项:

  1. 将您的图像保存在您的网络服务器可以提供的某个位置
  2. 用base64编码,直接显示

第一个选项是首选选项。代码应该是这样的:

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 中读取(请参阅:使用 base64 编码图像文件)并显示它:

base64_img = get_base_64()
return HttpResponse('<img alt="Embedded Image" src="data:image/jpeg;base64," % base64_img />')
于 2012-09-11T18:17:01.987 回答