2016-08-24 38 views
0

我正在使用Django和易於縮略圖2.3。我的意圖是拍攝一張圖像,將其縮小以適合方形,並在非方形原始圖像的情況下用白色填充空白區域。同樣在透明圖像的情況下,透明度應改爲白色。縮略圖創建崩潰easy_thumbnails.processors.background

我的settings.py包含以下行:

THUMBNAIL_PROCESSORS = (
    'easy_thumbnails.processors.colorspace', 
    'easy_thumbnails.processors.autocrop', 
    'easy_thumbnails.processors.scale_and_crop', 
    'easy_thumbnails.processors.filters', 
    'easy_thumbnails.processors.background', 
) 

THUMBNAIL_ALIASES = { 
    '':{    
     'square_image': {'background':'#fff','replace_alpha':'#fff','size':(200,200)}, 
     }, 
    } 

THUMBNAIL_TRANSPARENCY_EXTENSION = 'jpg' 

我已經嘗試了一些調試,一切似乎工作得很好,很有意義,直到代碼到達的背景處理器功能的線318易縮略圖processors.py

im = colorspace(im, replace_alpha=background, **kwargs) 

這裏調試器直接返回到在呼喚background(im, size, background=None, **kwargs)的方法。

在THUMBNAIL_ALIASES中配置square_image有什麼問題嗎?它可以是其他的嗎?

+1

顯示完整的堆棧跟蹤。 –

+0

@SergeyGornostaev,謝謝!我試圖找出如何獲得堆棧跟蹤,並意識到有一個「失敗的安靜」選項。我已經解決了這個問題並將寫出一個答案。我會加註你的評論,推動我走向正確的方向:-) –

回答

0

事實證明,則不能使用'background':'#fff'從在同一時間使用的色彩空間處理器在後臺處理器和'replace_alpha':'#fff',作爲background - 鍵變成replace_alpha

im = colorspace(im, replace_alpha=background, **kwargs) 

然後您結束與兩個replace_alpha,因爲一個仍然在**kwargs。這會導致錯誤。但它也證明,在

THUMBNAIL_ALIASES = { 
    '':{    
     'square_image': {'background':'#fff','replace_alpha':'#fff','size':(200,200)}, #wrong 
     }, 
    } 

你甚至不需要replace_alpha。後臺處理器不會在非合適的圖像邊添加條紋,而是將圖像寫入 - 在我的情況下爲白色背景。顏色空間轉換在此之前似乎不會發生。所以正確的定義是

THUMBNAIL_ALIASES = { 
    '':{    
     'square_image': {'background':'#fff','size':(200,200)}, 
     }, 
    }