快速解释如何在Python中调整图像大小同时保持相同的纵横比。我喜欢Python,并且已经学习了一段时间。前段时间,我写了一个Python脚本,我需要在其中调整一堆图像的大小,同时保持纵横比(比例)不变。所以我四处寻找,找到了Pillow,一个Python图像库和一个名为PIL的旧库的“友好分支”。要安装Pillow,请使用Python的pip模块:$python3-mpipinstallPillowScaledbyWidth下面是使用Pillow模块调整图像大小的基本脚本:fromPILimportImagebasewidth=300img=Image.open('fullsized_image.jpg')wpercent=(basewidth/float(img.size[0]))hsize=int((float(img.size[1])*float(wpercent)))img=img.resize((basewidth,hsize),Image.ANTIALIAS)img.save('resized_image.jpg')这些Python代码行使用Pillow将图像(fullsized_image.jpg)的大小调整为300像素的宽度。宽度设置在变量basewidth中,高度与新的宽度成比例。比例高度的计算方法是确定300像素占原始宽度(img.size[0])的百分比,然后将原始高度(img.size[1])乘以该百分比。生成的高度值存储在变量hsize中。如果您需要不同的图像宽度,您可以将basewidth更改为任何其他数字。另外请注意,由于我想保留完整尺寸的图像(fullsized_image.jpg),所以我使用不同的名称resized_image.jpg保存了调整后的图像。当然,您不必这样做。如果需要,您可以使用相同的文件名将调整大小的图像覆盖在全尺寸图像上。按高度缩放??如果高度固定,宽度按比例变化,基本是一样的,只需要改一下:fromPILimportImagebaseheight=560img=Image.open('fullsized_image.jpg')hpercent=(baseheight/float(img.size[1]))wsize=int((float(img.size[0])*float(hpercent)))img=img.resize((wsize,baseheight),Image.ANTIALIAS)img.save('resized_image.jpg')请注意,basewidth现在已替换为baseheight,因为高度是固定的。在第三行,我们正在计算高度百分比,所以我们需要img.size[1]而不是img.size[0]。size属性是一个元组,包括宽和高,单位是像素。size[0]指的是第一个元组元素,也就是宽度,size[1]指的是第二个元素,也就是高度。第4行也有这样一个开关,size[0]代表宽度,size[1]代表高度。
