0

我正在使用 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)

在这里,调试器直接返回到调用的方法background(im, size, background=None, **kwargs)

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

4

1 回答 1

0

事实证明,你不能同时'background':'#fff'从后台处理器和'replace_alpha':'#fff'色彩空间处理器使用,因为background-key 变成了replace_alphain

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)},
        },
    }
于 2016-08-24T09:49:14.917 回答