python图片处理库Pillow实现简单PS功能

 更新时间:2021年11月01日 09:22:46   作者:Python 技术  
Python 届处理图片最强的库是 PIL(Python Image Library),但由于该库只支持 2.x 版本,在此基础上做了扩展,出了一个兼容 3.x 的版本也就是 Pillow,因此,我们今天要用的库就是Pillow

9d13c8cd16c42f0f8bd386909f0cc1d3.png

文 | 豆豆

来源:Python 技术「ID: pythonall」

在我们的日常生活和工作中有不少场景需要简单处下理图片,很多人都是依赖 PS、美图秀秀等各种图像处理工具,殊不知在你打开软件的一瞬间 Python 就已经将图片处理完了。听起来是不是很神奇,正所谓是 Python 在手,啥也不愁。

安装

老规矩,先通过 pip 安装到本地机器。

pip install Pillow

基本操作

打开图像

可以通过 Image 类来操控图片,比如打开一张图片并获取其基本信息。

from PIL import Image, ImageFilter, ImageEnhance, ImageDraw, ImageFont
img = Image.open('cat.png')
print(F'图片大小为 {img.format}, 格式为 {img.size}, 模式为{img.mode}')
 
# 图片大小为 JPEG, 格式为 (3458, 3456), 模式为 RGB

转换格式

如果给目标图片转换格式,可以通过 save 函数来实现。

img.save("cat.png ")

之后你就会在同目录下得到一张扩展名为 png 的图片了。

97dd4960b536f45df8638ba1ae53f080.jpg

展示图片

直接通过 show 函数来显示图片。

img.show()

剪裁

使用 crop 函数传入一个四元祖坐标来剪裁图片。

point = (1500, 800, 3000, 2300)
img_crop = img.crop(point)
img_crop.show()

516e8ded442411a6f4f4511a4dcf1d07.png

合并

通过 paste 函数传入合并的图像和坐标来实现两张图片的合并,那如果要合并多张图片呢,当然是直接调用多次就好了呀。

img.paste(img_crop, (0, 0), None)
img.show(

52afdf599b99b3e23ff66f3c6be82efe.png

缩略图

有时候图像过大,这时候就显示出缩略图的必要了,可以通过 thumbnail 函数传入 size 来实现图片的缩小。

thumb_size = (345, 345)
img.thumbnail(thumb_size)
img.show()

2ecd2aef4577550872f2e34a1835ab46.png

旋转

使用 transpose 函数传入旋转角度来实现图片的翻转。

可以传入的参数有以下几种:

Image.ROTATE_90:逆时针旋转 90°

Image.ROTATE_180:逆时针旋转 180°

Image.ROTATE_270:逆时针旋转 270°

Image.FLIP_LEFT_RIGHT:左右翻转

Image.FLIP_TOP_BOTTOM:上下翻转

img_rotate = img.transpose(Image.ROTATE_90)
img_rotate.show()

9725812058d7fe9979028f10ae11e833.png

滤镜

当然,我们还可以对图片做一些滤镜处理。

  • 高斯模糊处理
img_gaussianblur = img.filter(ImageFilter.GaussianBlur(30))
img_gaussianblur.show()

d293cd1ae9ac46020730f6dbaba9b7b2.png

  • 获取照片轮廓
img_contour = img.filter(ImageFilter.CONTOUR)
img_contour.show()

e5488afef44bff97bce40b65ffc542f0.png

  • 亮度增强

如果照片亮度不够,还可以对照片进行亮度增强。

color = ImageEnhance.Color(img)
img_color = color.enhance(1.5)
img_color.show()

4e2efe29ff8cf6eb578e023bf99eaece.png

二次创作

当然,如果想对图片进行二次创作,比如添加一些辅助线,文字之类的可以用 ImageDraw 类来完成。

画线

draw = ImageDraw.Draw(img)
draw.line((0, 0) + img.size, fill=20, width=3)
draw.line((0, img.size[1], img.size[0], 0), fill=200, width=3)
img.show()

3e459b70ecdfa5497defa58e7d0dddc6.png

文字

draw = ImageDraw.Draw(img)
font = ImageFont.truetype('AliPuHui-Bold.ttf', 200)
text = 'This is a cat!'
draw.text((450, 450), text, font=font, fill='pink')
img.show()

bc4301923978110e24e68f96f5266429.png

当然,如果有多行文字的话,直接加入换行符 \n 即可。

457e6e60caccd58d1e6b4609abfff671.png

总结

今天派森酱带大家一起通过使用 Pillow 库对图片进行一些简单的操作,事实上 Pillow 库远不止此,将这些简单的操作进行组合甚至可以自创表情包,期待小伙伴们自行发掘更多更好玩的用法呀~

以上就是python图片处理库Pillow实现简单PS功能的详细内容,更多关于Pillow库实现简单PS的资料请关注脚本之家其它相关文章!

相关文章

  • Atom Python 配置Python3 解释器的方法

    Atom Python 配置Python3 解释器的方法

    今天小编就为大家分享一篇Atom Python 配置Python3 解释器的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • python计算圆周率pi的方法

    python计算圆周率pi的方法

    这篇文章主要介绍了python计算圆周率pi的方法,涉及Python针对数学运算的相关技巧,需要的朋友可以参考下
    2015-07-07
  • Python量化交易实战之使用Resample函数转换“日K”数据

    Python量化交易实战之使用Resample函数转换“日K”数据

    resample函数是Python数据分析库Pandas的方法函数,它主要用于转换时间序列的频次,今天通过本文给大家分享python使用Resample函数转换时间序列的相关知识,感兴趣的朋友一起看看吧
    2021-06-06
  • 对Python中DataFrame按照行遍历的方法

    对Python中DataFrame按照行遍历的方法

    下面小编就为大家分享一篇对Python中DataFrame按照行遍历的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • django 类视图的使用方法详解

    django 类视图的使用方法详解

    这篇文章主要介绍了django 类视图的使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python箱型图绘制与特征值获取过程解析

    Python箱型图绘制与特征值获取过程解析

    这篇文章主要介绍了Python箱型图绘制与特征值获取过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Python 余弦相似度与皮尔逊相关系数 计算实例

    Python 余弦相似度与皮尔逊相关系数 计算实例

    今天小编就为大家分享一篇Python 余弦相似度与皮尔逊相关系数 计算实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • PyCharm运行bash脚本的实现

    PyCharm运行bash脚本的实现

    本文主要介绍了PyCharm运行bash脚本的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • python实现神经网络感知器算法

    python实现神经网络感知器算法

    这篇文章主要为大家详细介绍了python实现神经网络感知器算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • OpenCV实现手势虚拟拖拽的使用示例(附demo)

    OpenCV实现手势虚拟拖拽的使用示例(附demo)

    本文主要介绍了OpenCV实现手势虚拟拖拽的使用示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-11-11

最新评论