Django - Сохранение миниатюры с другим именем файла - PullRequest
0 голосов
/ 15 февраля 2011

Я хочу создать миниатюры загруженных файлов изображений и сохранить их с "_th" в конце имени файла.В настоящее время я использую следующий код:

def _create_thumbnail(img_path):
    image = Image.open(img_path)

    if image.mode not in ("L", "RGB"):
        image = image.convert("RGB")

    image.thumbnail(MEDIA_THUMBNAIL_SIZES, Image.ANTIALIAS)
    return image.save(img_path, 'JPEG', quality=MEDIA_THUMBNAIL_QUALITY)

Он перезаписывает исходный файл.Есть ли способ легко изменить имя файла, чтобы включить _th до расширения файла и сохранить его в том же месте?

Кроме того, я сохраняю миниатюру после сигнала после сохранения, используя следующий метод:

@receiver(post_save, sender=Media, dispatch_uid="media_create_thumb")
def create_media_thumbnail(sender, **kwargs):
    thumb = generate_thumbnail(kwargs['instance'].file)

Мне было интересно, если это нормально (питон?) Способ использования сигналов?Так как я не использую админ-панель django, использование сохранения сообщений администратора не вариант.

Этот метод для создания миниатюр будет открыт для пользователей, поэтому, если в приведенном выше коде есть что-то, что может вызвать проблемы, я был бы признателен!

1 Ответ

2 голосов
/ 15 февраля 2011

Я бы попробовал следующее:

import os

(head, tail) = os.path.split(img_path)
(name,ext)=tail.split('.')
tail=name+'_th.'+ext
img_path=os.path.join(head,tail)

редактирование: как я недавно узнал, вы можете даже ярлык:

(name,ext)=os.path.splitext(img_path)
img_path = name + '_th.' + ext
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...