2016-07-04 13 views
0

こんにちは私はDjangoの初心者です(私は非ネイティブの英語話者です)。私はデータベース(ImageField)から画像を取得しようとしています(POST経由でフォームのIDを取得)、PIL ImageでトリミングしてHttpResponse経由で送信しています。エラーは発生しませんが、画像 "piece.jpg"を受け取った場合、破損したファイルです。私はメモ帳を使用して、それを開くと私は見ることができます:私はちょうど「object.docfile」を送信しようと、それが動作ImageField DjangoからPILへHttpResponse経由で送信する画像

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 

<PIL.Image.Image image mode=RGB size=46x75 at 0x3DEA790> 

これはviews.pyで私のコードです。しかし、私が "im"(これはPILイメージです)を送信しようとすると、それは動作しません。

HttpResponseで送信する必要があります。そのページでダウンロードできるようにしたいからです。

答えて

0

これは私に解決策を見つけるのに役立ちました!あなたのコードはブラウザでイメージを開きます(私はダウンロードしたと言っていないので、これは問題ありません)。ダウンロードダイアログを取得するには、コードは次のとおりです。

response = HttpResponse(content_type='image/jpg') 
    cropped_image.save(response, "JPEG") 
    response['Content-Disposition'] = 'attachment; filename="piece.jpg"' 
    return response 

おかげ種類先生:)

関連する問題