目前我正在使用:
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)
显然,您需要裁剪或填充图像。可以执行以下操作,根据缩略图的纵横比(未测试)获得最大的居中裁剪:
如果使用简单的缩略图,则需要将
crop
设置为True
,并将upscale
设置为True
,以始终填充空间(具有完全相同的尺寸)。例:使图像符合图像尺寸:
以下是我对为图片做填充的看法:
它首先使用缩略图操作将图像降到原来的范围内并保留外观。然后它将它裁剪出来,以实际填充边界的大小(因为除非原始图像是正方形的,否则它现在会变小),然后我们找到适当的偏移量来使图像居中。图像会偏移到中心,因此最终会使用黑色填充,但不会剪切图像。
除非你能在不丢失边缘重要图像数据的情况下,对一个合适的中心裁剪做出一个非常合理的猜测,否则填充拟合方法会更好地工作。
更新
这是一个版本,可以做中心作物或垫适合。
相关问题 更多 >
编程相关推荐