easy_thumbnails.processors.background 缩略图创建崩溃

thumbnail creation crashes in easy_thumbnails.processors.background

我正在使用 Django 和 easy-thumbnails 2.3。我的目的是拍摄图像,将其缩小以适合正方形,并在非正方形原始图像的情况下用白色填充空白区域。同样在透明图像的情况下,透明度应更改为白色。

我的 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'

我尝试了一些调试,一切似乎都运行良好并且有意义,直到代码到达 easy-thumbnails 的后台处理器函数中的第 318 行 processors.py:

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

此处调试器 returns 直接指向调用 background(im, size, background=None, **kwargs) 的方法。

我在THUMBNAIL_ALIASES中配置square_image有什么问题吗?还能是别的吗?

事实证明,您不能同时使用来自后台处理器的 'background':'#fff' 和来自色彩空间处理器的 'replace_alpha':'#fff',因为 background-key 变成了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)},
        },
    }