はじめに
django-stdimageは画像サイズを変更して保存してくれます.
画像サイズが大きいと読み込みに時間がかかるのでサイズ変更してくれるライブラリは便利です。
しかし,このdjango-stdimage...
元の画像も保存してしまうので無駄にデータの容量をとってしまう...
そこで,今回は画像サイズを変更し,元の画像を削除します。
インストール
sorl-thumbnailをインストールします。
$ pip install sorl-thumbnail
※django-stdimage のインストールもしておいてね
settings.py
#settings.py INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.sites', 'stdimage', #追加 'sorl.thumbnail', #追加 ]
models.py
# models.py from django.db import models from stdimage.models import StdImageField from sorl.thumbnail import delete class Post(models.Model): image=StdImageField(upload_to='image/',blank=True,variations={ 'large': (600, 400), 'thumbnail': (100, 100, True), 'medium': (300, 200), }) def save(self, *args, **kwargs): super(Post, self).save(*args, **kwargs) temp_img_name = self.image.name try: delete(temp_img_name) #ここで削除する! except :pass
これで画像を保存するとオリジナルを除いたサイズが違う3つの画像が保存されています.
↑こちらの本は英語で書かれていますが,簡単な英語かつ分かりやすくソースコードが書かれているのでお勧めです。
favorite
1
chat_bubble

プロモーション