(目录)

前言

  • 在Python中,Pillow是一个强大的图像处理库,它是PIL(Python Imaging Library)的一个分支,支持"jpeg","png","bmp","gif","ppm","tiff" 等多种图像文件格式,通过本篇文章,你将了解到pillow库不同功能的实践方法,不止有读取和保存图片,创建缩略图和合并到图像、模糊、裁剪、翻转和旋转图像、调整大小和添加水印、添加滤镜和处理图像颜色等等。后面还会讲解一些利用Pillow库制作的一些图片脚本以及利用pyqt5和tkinter做的图形化界面。

导航

pillow的使用篇

图片脚本篇

Pillow库的使用

安装

  • 既然是第三方库,肯定免不了安装:使用pip安装Pillow
pip install Pillow

这里还有一个需要注意的就是不同的pillow库支持的python版本不同, Pillow库目前最新的版本为11.0.0,我这里使用的就是最新版本,根据你自己的python解释器版本下载对应的Pillow库,下面是版本对照图: 微信图片_20250116162002.jpg

创建Image图像

Image 类是 Pillow 库中最为重要的类,该类被定义在和与其同名的 Image 模块中。 使用下列导包方式引入 Image 模块:

from PIL import Image

使用 Image 类可以实例化一个 Image 对象,通过调用该对象的一系列属性和方法对图像进行处理。Pilow 提供了两种创建 Image 实例对象的方法,分别是open()和new()方法,下面对它们进行简单的介绍。

open()

使用Image的open()方法,可以创建一个Image对象,语法格式如下: image = Image.open(fp,mode='r') 参数说明:

  • fp:文件路径(filepath)的缩写,字符串格式
  • 可选,默认为r
from PIL import Image # 导入Image图像处理模块
# 创建一个Image对象 
image = Image.open('1.jpeg')
# 显示图片
image.show()

输出: 微信图片_20250116160810.jpg

new()

使用Image类提供的new()方法可以创建一个新的Image对象: image = Image.new(mode,size,color) 参数说明: mode:图像模式,字符串参数,如RGB(真色彩模式),RGB(真色彩+透明通道),L(灰度模式)等参数 size:图片的尺寸,元组参数(width,height) color:图片的颜色,参数可以为RGB三元组数字格式(255,255,255),颜色的十六进制("#efefef")以及颜色英文单词("pink"),可选参数,如果不写,会根据mode参数使用默认值来填充图像

from PIL import Image # 导入Image图像处理模块
# 创建一个Image对象
image = Image.new(mode='RGB',size=(224,224),color='pink') # 创建一个224x224的粉色图像
# 显示图片
image.show()
# 保存图片
image.save('pink_test.jpg')

输出: 微信图片_20250116160800.jpg

Image对象的属性

size

  • 查看图片的尺寸

format

  • 查看图片的格式

mode

  • 查看图片的图像模式

info

  • 查看图片的信息

下面为示例:

from PIL import Image # 导入Image图像处理模块
# 创建一个Image对象
image = Image.open('1.jpeg')
# 图片的尺寸
print(f"图片的尺寸: {image.size}")
# 图片的格式
print(f"图片的格式: {image.format}")
# 图片的模式
print(f"图片的模式: {image.mode}")
# 图片的信息
print(f"图片的信息: {image.info}")

输出:

图片的尺寸: (474, 325)
图片的格式: JPEG
图片的模式: RGB
图片的信息: {'jfif': 257, 'jfif_version': (1, 1), 'dpi': (0, 0), 'jfif_unit': 1, 'jfif_density': (0, 0), 'exif': b'Exif\x00\x00MM\x00*\x00\x00\x00\x08\x00\x02@\x00\x00\x03\x00\x00\x00\x01\x00U\x00\x00@\x01\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00'}

还有其他不常用的属性,例如图片的色彩模式,调色板等等,大家可以自行去了解一下。

共勉

感觉累就对了,那是因为你在走上坡路!

博客

  • 本人是一个渗透爱好者,不时会在微信公众号laity的渗透测试之路更新一些实战渗透的实战案例,感兴趣的同学可以关注一下,大家一起进步。