Djangoから画像ファイルを保存させて表示する所は実装できたのですが、この機能を更に画像を適切な画像ファイルに比率を変えずにリサイズして保存しすところが実装できません。
どなたかお力添えお願い致します。
【要件】
・アップロードしたら元の画像は消え新しく出来た写真を入れ替えて保存させる。
・Widthを600に合わせて比率を変えずに保存させる。
自分が途中まで書いたコードです。
pip install pillowでpillowをインストールしています。
(models.py)
python
1from django.db import models 2from core.models import TimeStampedModel 3 4from PIL import Image 5 6 7def upload_location(instance, filename): 8 instance_id = instance.id 9 return "%s/%s" % (instance_id, filename) 10 11 12class Event(TimeStampedModel): 13 title = models.CharField(max_length=200) 14 # この画像を変更(リサイズして上書き保存)したいです。 15 image = models.ImageField( 16 upload_to=upload_location, null=True, blank=True, 17 width_field="width_field", height_field="height_field") 18 height_field = models.IntegerField(default=0) 19 width_field = models.IntegerField(default=0) 20 21 def __str__(self): 22 return self.title 23 24 def save(self, *args, **kwargs): 25 # ここからがリサイズするメソッドを記入しました。 26 if self.image: 27 image = Image.open(self.image) 28 (width, height) = image.size 29 # 比率を維持させる処理 30 range_img = 600 / width 31 height = int(height * range_img) 32 self.image = image.resize((600, height), Image.ANTIALIAS) 33 self.image.save(self.image.path) 34 super(Event, self).save(*args, **kwargs) 35 36 37""" 38AttributeError: pathとエラーメッセージがでました。 39"""
ご回答よろしくお願いします。
何か簡単なプラグインなどもありましたらお教えいただけるありがたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/04 00:53