c

codeye

V1

2022/10/18阅读:17主题:默认主题

Python中的图像调整和裁剪工具

Python中的图像调整和裁剪工具

Python图像调整和裁剪工具

网站如何使那些图标随你的屏幕大小而放大或缩小?通过在不同的尺寸中拥有多个相同的图像。如果你想把你的标志以多种不同的尺寸添加到你的网站上,那么你就需要学习如何进行图像大小调整。图片调整大小总是一个令人讨厌的任务。在这篇文章中,我们不仅要学习如何调整图片的大小,还要学习如何用Python裁剪图片。

在这篇文章中,我们将介绍。

什么是PIL? 如何用PIL在Python中裁剪图片 如何用PIL在Python中调整图像的大小 使用PIL来保存图像 测试我们的图像裁剪、调整大小和保存功能 如何在Python中调整大小、裁剪和保存图像的总结

什么是PIL

PIL是 "Python Imaging Library "的缩写。它是Python的一个用于图像处理的附加库。它最初于1995年发布,于2011年停用。我们在这篇文章中使用的当前版本的PIL被分叉为 "Pillow"。Pillow增加了对Python 3的支持。

PIL,以及随后的Pillow,有一系列的图像处理工具。你可以做每个像素的改变,遮蔽和透明,过滤,增强,添加文本,以及更多。在这篇文章中,我们将简单地使用它来裁剪、调整大小,并保存一张图片。我们使用的图片是这篇关于推文中的词云的文章中的词云背景。

在我们进入代码之前,我们必须先安装这个库。我们可以用

pip install pillow

来做。如果你使用Anaconda,你可以使用

conda install pillow

如何用PIL在Python中裁剪图片

这篇文章中所有的代码都属于一个文件。如果你想把它分开,记得每次都要导入PIL库。对于我们的用途,我们只需要PIL的Image对象。我们要做的第一件事是打开一个图像,并把它分配给一个变量。接下来,我们将打印出图片的大小,以方便我们了解。

我们的crop_image函数需要五个参数。第一个参数是图像本身,我们要求它是一个图像对象。接下来是我们要裁剪的矩形的左上和右下坐标。奇怪的是,Image把这个作为一个4元组,而不是两个2元组,但这就是饼干的碎裂方式。

我们需要传递的整数的顺序是最左边的值,最上面的值,最右边的值,以及我们想要裁剪的最下面的值。在我们的函数中,我们简单地调用图像对象的裁剪函数,并传递一个由传入的整数组成的4元组。为了清楚起见,我们可以展示图像。最后,我们返回图像,以便我们以后可以使用它。

from PIL import Image
 
im = Image.open("./cloud_shape.png")
 
width, height = im.size
print(width, height)

# 左、上组合给出左上角的坐标
# 右,下组合给出右下角坐标
# left, upper combo gives the upper left corner coordinates
# right, lower combo gives the lower right corner coordinates

def crop_image(im: Image, left, upper, right, lower):
   im2 = im.crop((left, upper, right, lower))
   im2.show()
   return im2

如何在Python中用PIL调整图片的大小

接下来,让我们来看看用Python调整图像的大小。这个函数只需要3个参数。图像本身是第一个参数。另外两个参数是我们想要调整图像大小的结果宽度和高度。

与裁剪类似,我们在这里所做的就是调用调整大小的方法。这个方法需要一个所需图像宽度和高度的元组。然后,我们为我们的信息显示图像,并返回它供以后使用。

def resize_image(im:Image, width, height):
   im1 = im.resize((width, height))
   im1.show()
   return im1

在Python中使用PIL来保存一个图像

最后,让我们做第三个函数来保存Python中的图像。这个函数需要两个参数,一个是图像本身,另一个是我们要保存图像的文件名。与裁剪和调整大小类似,我们使用 Image 对象来保存图像。我们所做的就是把文件名传递给save选项,把图像保存到该文件中。

def save_image(im:Image, filename):
   im.save(filename)

测试我们的图像裁剪、调整大小和保存函数

现在我们有了这三个函数,让我们来测试一下它们。让我们把图片裁剪成210×210的正方形。我们选择的左上角的坐标是(210,210),右下角的坐标是(420,420)。为了测试调整大小的命令,我们将调整到一半的高度和一半的宽度。请注意,你也可以调整更大的尺寸(我也测试了两倍的宽度和高度)。

最后,我们可以通过传入生成的图像和文件名来测试图像保存功能。在这个例子中,我只是把裁剪后的图像称为cropped.png,把调整后的图像称为resized.png。不过你并不局限于PNG图像。

cropped = crop_image(im, 210, 210, 420, 420)
resized = resize_image(im, width/2, height/2)
 
save_image(cropped, "cropped.png")
save_image(resized, "resized.png")

我们从云图像中得到的图像如下所示。

从(210, 210)裁剪到(420, 420)。 Python用PIL裁剪的图像 用PIL裁剪的Python图像 从1240x656调整为620x328。

Python调整图像大小 用Pillow调整图像大小

如何在Python中裁剪、调整大小和保存图像的总结

在这篇文章中,我们对Python中的PIL,即现在的Pillow库进行了介绍。尽管名称有了变化,我们仍然导入了PIL。原来的PIL已经不再被维护,只支持到Python 2,这已经过时了。

在简单介绍了Pillow之后,我们看了如何依次裁剪、调整大小和保存图像。我们了解到,裁剪一张图片需要四个整数值,决定了左上角和右下角。同时,调整图像的大小需要两个整数值,代表新的像素大小。最后,保存图像只需要一个字符串参数--我们要保存到的文件名。

分类:

后端

标签:

后端

作者介绍

c
codeye
V1