LOADING
django-stdimageで元の画像を削除する[Django]

はじめに


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
chat_bubble
プロモーション