gpt4 book ai didi

django - 带有简单缩略图的衬垫合身

转载 作者:行者123 更新时间:2023-12-04 13:41:59 28 4
gpt4 key购买 nike

我正在使用简单的缩略图为我的网站制作缩略图。我想从 1500x1023 像素的图像创建缩略图。所需缩略图的大小为 100x100 像素。我想要的是缩略图显示整个 Logo ,而不是裁剪或拉伸(stretch)。我已经看到这被称为填充合身 - 与裁剪相反。例如,对于这张图片,我们会在顶部添加 236px 的空白,在底部添加 237px 的空白,然后调整大小。有没有办法用简单的缩略图做到这一点?如果没有,关于如何解决这个问题的任何建议?谢谢!

最佳答案

感谢 Timmy O'Mahony 建议创建一个处理器来进行填充。这是遇到类似问题的人的代码。为了让它工作,你需要在设置中这样的东西:

THUMBNAIL_PROCESSORS = (
'easy_thumbnails.processors.colorspace',
'common.thumbnail_processors.pad_image',
'easy_thumbnails.processors.autocrop',
'easy_thumbnails.processors.scale_and_crop',
'easy_thumbnails.processors.filters')

然后你可以将它添加到 common/thumbnail_processors.py (或任何地方)
import Image

def pad_image(image, **kwargs):
""" Pad an image to make it the same aspect ratio of the desired thumbnail.
"""

img_size = image.size
des_size = kwargs['size']
fit = [float(img_size[i])/des_size[i] for i in range(0,2)]

if fit[0] > fit[1]:
new_image = image.resize((image.size[0],
int(round(des_size[1]*fit[0]))))
top = int((new_image.size[1] - image.size[1])/2)
left = 0
elif fit[0] < fit[1]:
new_image = image.resize((int(round(des_size[0]*fit[1])),
image.size[1]))
top = 0
left = int((new_image.size[0] - image.size[0])/2)
else:
return image

# For transparent
#mask=Image.new('L', new_image.size, color=0)
#new_image.putalpha(mask)

# For white
new_image.paste((255, 255, 255, 255))

new_image.paste(image, (left, top))
return new_image

关于django - 带有简单缩略图的衬垫合身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11960079/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com