我想创建一个缩略图,宽度必须固定或宽度不超过200像素(长度可以是任何东西)。
图片为.jpg或.png或.gif
我正在使用python。
必须修复的原因是它适合html表格单元格。
答案 0 :(得分:4)
要保持比例相同,您需要将宽度和高度乘以相同的缩放系数。单独计算每个以适合您的空间,然后选择两者中最小的一个。你说你不关心身高,但你可能想要设置一个限制,以防有人给你一个非常瘦的图像。
在下面的代码中,我添加了两个额外的约束:生成的缩略图宽度或高度将始终为> = 1,缩放因子将始终为< = 1(因此缩略图不是比原来大。)
scale_x = max_width / image_width
scale_y = max_height / image_height
scale = min(scale_x, scale_y, 1)
thumb_width = max(round(image_width * scale), 1)
thumb_height = max(round(image_height * scale), 1)
答案 1 :(得分:3)
查看PyMagick,它是ImageMagick库的python接口。调整图像大小,保持比例,同时限制最长边是相当简单的。
编辑:当我说的相当简单时,我的意思是你可以根据每一方最长的可接受值描述你的调整大小,ImageMagick会自动保留比例。
答案 2 :(得分:1)
支持使用PIL的建议。但是,计算实际上要简单得多:
from PIL import Image as PILImage
imageObj = PILImage.open(image_filename,'r')
iwidth, iheight = imageObj.size # pixels
size_proportion = iheight / iwidth # make sure your "limiter" is the denominator
newheight = size_proportion * 200
# resize the image to (newheight, 200) and save it
或者,只需调用子进程并使用ImageMagic或GraphicsMagic(我使用后者)这些库为您提供了非常好的缩放算法,使用较低级别的语言编写并且非常优化。 IM和GM做的另一个好处是图像的批量处理。另一个好处是,在某些模式下,您不需要为GraphicsMagic提供所需的大小,只需给出最大值,它将根据超出给定最大值的约束来缩小图片。看看吧。