python 调整图像大小
我喜欢Python ,并且已经学习了一段时间。 前段时间,我编写了一个Python脚本,需要调整一堆图像的大小,同时保持长宽比(比例)不变。 因此,我环顾四周,发现了PIL(Python Imaging Library) 。
您需要安装PIL才能使代码正常工作。 请注意,尽管也可以使用称为Pillow的“友好叉”,但似乎不再维护PIL。 要在基于Debian的系统上安装PIL,请以root用户身份在终端中运行以下命令:
aptitude install python-imaging
现在是用于在保持宽高比的同时调整图像大小的Python代码。
import PIL
from PIL import Image
basewidth
=
300
img
= Image.
open
( ‘fullsized_image.
jpg
')
wpercent = (basewidth / float(img.size[0]))
hsize = int((float(img.size[1]) * float(wpercent)))
img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
img.save(‘resized_image.jpg'
)
这几行Python代码将使用PIL将图像( fullsized_image.jpg )调整为300像素的宽度,该宽度设置为变量basewidth和与新宽度成比例的高度。 通过确定原始宽度(img.size [0])的300个像素的百分比,然后将原始高度(img.size [1])乘以该百分比,可以计算出比例高度。 结果高度值保存在变量hsize中。
如果您需要不同的图像宽度,则可以将基本宽度更改为任何其他数字。 另外,请注意,我将调整大小后的图像保存为另一个名称resized_image.jpg ,因为我也想保留完整大小的图像( fullsized_image.jpg )。 当然,您不必这样做。 如果需要,可以使用相同的文件名用调整大小后的图像覆盖完整尺寸的图像。
注意:如果在Zope中将此脚本用作外部方法,则需要PIL import Image中的行,以避免名称空间与Zope的Image冲突。
如果高度是固定的,宽度是成比例变化的,则几乎是同一件事,您只需要稍微改变一下即可:
baseheight
=
560
img
= Image.
open
( ‘fullsized_image.
jpg
')
hpercent = (baseheight / float(img.size[1]))
wsize = int((float(img.size[0]) * float(hpercent)))
img = img.resize((wsize, baseheight), PIL.Image.ANTIALIAS)
img.save(‘resized_image.jpg'
)
注意, basewidth现在是baseheight ,因为height是固定的。 在第三行中,我们正在计算高度百分比,因此我们需要img.size [1]而不是img.size [0] 。 size属性是一个元组,包含以像素为单位的宽度和高度。 size [0]表示第一个元组元素,它是宽度,而size [1]是第二个元素,它是高度。 第4行还具有在size [0](宽度)和size [1](高度)之间切换的功能。
最初在Dayo Ntwari的博客上发布,并经许可在知识共享(Creative Commons)下重新发布。
python 调整图像大小