2016-08-24 110 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)}, 
     }, 
    }