1

ImageMagick とバインディング ワンドを使用して、Django にアップロードされた画像のサムネイルを生成しています。サムネイルをうまく生成できますが、画像オブジェクトを ImageMagick から Django モデルに戻す方法がわかりません。だから私は以下のように単純化されたモデルを持っています:

from wand import Image

class Attachment(models.Model):
    attachment = models.FileField(upload_to="some_path")
    thumbnail = models.ImageField(upload_to="other_path")

    def generate_thumb(self):
        with Image(file=self.attachment) as wand:
            thumb = wand.resize(width=50, height=50)
            thumb.save(file=self.thumbnail)

ValueError: The 'thumbnail' attribute has no file associated with it. これにより、 Is there a simple way to get a file object out of wand and into django without too much sillies?の最後の行でエラーが生成されます。

ありがとう。

4

2 に答える 2

5

免責事項: 私はあなたが使用しようとしているワンドの作成者です。

まず、ImageFieldPIL が必要です。別のイメージ ライブラリが既にインストールされている可能性があるため、Wand は必要ありません。ただし、大きな変更はせずにあなたの質問に答えます。

self.thumbnail現時点ではまだ初期化されていないようです。そのため、新しいまたは最初のものを作成する必要がありFileますImageFile

import io

def generate_thumb(self):
    buffer = io.BytesIO()
    with Image(file=self.attachment) as wand:
        wand.resize(width=50, height=50)
        wand.save(file=buffer)
    buffer.seek(0)
    self.thumbnail = ImageFile(buffer)

プラス、from wand import Image上げImportErrorます。次のように変更する必要があります。

from wand.image import Image
于 2012-09-12T13:19:13.883 に答える
2

目標が django アプリの簡単なサムネイルである場合は、https ://github.com/sorl/sorl-thumbnail を試してください。

かなり人気があり、アクティブです。

于 2012-09-12T13:22:34.500 に答える