django-imagekit の 3.0.3 を使用しています。モデルに次の設定があります。
render_image = models.ImageField(upload_to='spec/', null=True, blank=True)
render_thumbnail = ImageSpecField([ResizeToFill(220, 220)],
source='render_image',
format='JPEG',
options={'quality': 90})
最初に画像をアップロードすると、サムネイルが正常に作成されます。私の問題は、元の画像をプログラムで変更していることです。新しいサムネイルに基づいてサムネイルを再生成したいのですが、方法がわかりません。この行で元の画像を変更しています:
model.render_image = image_rel_path # that is, 'model/uuid.png'
これで問題なく動作し、新しいイメージにアクセスできます。imagekit サムネイル テンプレート タグを使用して、サイズを変更した最新のサムネイルを作成することもできます。私はそれで行きますが、背景画像である必要があるため、完全な画像タグではなく、画像の URL だけが必要です (imagekit 開発者: テンプレート タグで URL を取得する方法がない場合は、お願いしますHTML の生成は最小責任の原則に違反することに注意してください)。
imagekit の内臓を掘り下げたくありません。ソース ファイルの更新方法を変更することで、「ソース ファイルが変更されました」という信号でサムネイルが適切に生成されるようにしたいだけです。のようなものを呼び出しますmodel.render_thumbnail.generate(source=model.render_image)
。