2011-02-15 79 views
0

我想創建上傳的圖像文件的縮略圖,並在文件名末尾保存「_th」。目前,我正在使用以下代碼:Django - 使用不同的文件名保存縮略圖

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) 

我想知道,這是一個確定的(Python的?)使用信號的方式:

此外,我的帖子保存信號後,使用以下方法保存縮略圖?由於我沒有使用django管理面板,因此使用admins後保存不是一個選項。

這種創建縮略圖的方法將會向用戶開放,所以如果有任何關於上面的代碼可能會導致問題,我會很感激的!

+0

的Django無關與生成縮略圖,它似乎你正在使用另一個庫。 你能告訴我們你的Image類從哪裏來? – makapuf 2011-02-15 17:36:28

回答

2

我會嘗試以下方法:

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 
+0

在現場服務器上使用os模塊可以嗎?我一直認爲這只是一件簡單的事情,可以讓本地的事情發生。 – Hanpan 2011-02-15 18:03:07

相關問題