嗨,我是Django的新手(而且我不是讲英语的)。我试图从数据库(ImageField)获取一个图像(我通过POST获取图像的id ),用PIL进行裁剪并通过HttpResponse发送它。它不会给出错误,但是当我收到图像"piece.jpg“时,它是一个损坏的文件。如果我使用记事本打开它,我只能看到:
<PIL.Image.Image image mode=RGB size=46x75 at 0x3DEA790>这是我在views.py中的代码
from PIL import Image
def function(request):
if request.method == 'POST':
id = request.POST.get('id')
object = Document.objects.get(pk=id)
im = Image.open(object.docfile)
left = 10
top = 10
right = 100
bottom = 100
cropped_image = im.crop( (left, top, right, bottom) )
response = HttpResponse(cropped_image, content_type='image/jpg')
response['Content-Disposition'] = 'attachment; filename="piece.jpg"'
return response我试着只发送"object.docfile“就行了。但是如果我试图发送"im“(这是一个PIL图像),它就不起作用了。
我需要通过HttpResponse发送它,因为我希望它作为一个可下载的页面。
发布于 2016-07-04 11:45:01
HttpResponse需要字符串或迭代器。文档中的更多细节:
你试过这样的东西吗?
response = HttpResponse(mimetype='image/jpg')
cropped_image.save(response, "JPEG")
return response发布于 2016-07-04 12:05:12
这帮我找到了解决办法!您的代码在浏览器中打开图像(这很好,因为我没有说我希望它作为下载)。要获得下载对话框,代码如下:
response = HttpResponse(content_type='image/jpg')
cropped_image.save(response, "JPEG")
response['Content-Disposition'] = 'attachment; filename="piece.jpg"'
return response谢谢您,先生:)
https://stackoverflow.com/questions/38183374
复制相似问题