【发布时间】:2012-02-24 13:43:39
【问题描述】:
目前我正在使用:
os.chdir(album.path)
images = glob.glob('*.*')
# thumbs size
size = 80,80
for image in images:
#create thumb
file, ext = os.path.splitext(image)
im = Image.open(os.path.join(album.path,image))
im.thumbnail(size, Image.ANTIALIAS)
thumb_path = os.path.join(album.path, 'thumbs', file + ".thumb" + ".jpeg")
im.save(thumb_path)
虽然这可行,但我最终会得到不同尺寸的图像(有些是纵向的,有些是横向的),但我希望所有图像都具有精确的尺寸。也许是明智的种植?
更新:
我不介意裁剪图像的一小部分。当我说合理的裁剪时,我的意思是这样的算法:
if image is portrait:
make width 80px
crop the height (will be more than 80px)
else if image is landscape:
make height 80px
crop the width to 80px (will be more than 80px)
【问题讨论】:
-
考虑阅读手册。
thumnail方法意味着保留图像的方面。显然,您不能同时拥有两者,因为并非所有图像都具有相同的纵横比。如果您想在不保留比率的情况下重新缩放,请考虑使用resize。 -
如果他想合身,他可以让它们的尺寸相同,这样可以用恒定的颜色填充额外的区域。这将允许 4x3 或 16x9 或任何方面的图像适合 80x80 的给定尺寸
-
不幸的是,没有标准的方法来定义裁剪的“合理”。听起来您总是想从图像中裁剪出一个正方形,这意味着您可能会切掉您真正想要保留的部分。
-
@MarkRansom - 我同意。如果您的源图像恰好具有非常非方形的外观,您将面临丢失大部分图像的风险。我认为合适的填充物将是最好的。看我的回答。
-
感谢大家的回答,但我更喜欢剪切图像并丢失其中的一部分而不是添加填充。请参阅上面的更新。
标签: python django image thumbnails python-imaging-library