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

本文由mdnice多平台发布

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,454评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,553评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,921评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,648评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,770评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,950评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,090评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,817评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,275评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,592评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,724评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,409评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,052评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,815评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,043评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,503评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,627评论 2 350

推荐阅读更多精彩内容