第1章: 初识Pillow(PIL)

1.1 Pillow简介与历史

Pillow 是 Python 的图像处理库,由原始的 Python Imaging Library(PIL)发展而来。PIL 最早由 Fredrik Lundh 开发,是 Python 社区中用于图像处理的最早库之一。然而,PIL 的开发逐渐停滞,导致它与 Python 的新版本不兼容。为了弥补这一问题,Pillow 项目诞生了,它是 PIL 的一个分支,致力于在原有功能基础上进行改进并增加新特性,尤其是兼容 Python 3 的支持。

Pillow 的设计注重易用性和性能,使 Python 程序员能够轻松处理图像文件。它支持多种图像格式,如 JPEG、PNG、BMP、GIF、TIFF 等。Pillow 在图像处理中的广泛应用,使其成为许多 Python 项目中处理图像的首选工具。

1.2 Pillow与PIL的区别

虽然 Pillow 是 PIL 的派生库,但两者在功能和兼容性上有所不同。Pillow 进行了一些重要改进,使其成为更现代、更强大的图像处理库。以下是两者的主要区别:

  • 兼容性:Pillow 支持 Python 3,而 PIL 仅支持 Python 2。
  • 新特性:Pillow 增加了一些新功能,如 Alpha 通道支持、EXIF 数据处理、抗锯齿缩放等。
  • 错误修复:Pillow 修复了 PIL 中许多已知的 Bug,性能更稳定。
  • 更好的社区支持:Pillow 项目仍在积极维护,拥有更活跃的社区和丰富的资源。
1.3 安装与配置

安装 Pillow 十分简单,可以通过 Python 包管理工具 pip 安装。根据系统环境,安装方法可能略有不同。

1.3.1 基本安装

对于大多数用户,运行以下命令即可安装 Pillow:

bash 复制代码
pip install Pillow
1.3.2 系统依赖库

在某些系统上(例如 Linux),安装 Pillow 前需确保系统已安装一些依赖库,以支持特定的图像格式。可以按以下命令安装:

bash 复制代码
# Ubuntu/Debian 系统
sudo apt-get install python3-dev python3-pip libjpeg-dev libfreetype6-dev zlib1g-dev

# Red Hat/CentOS 系统
sudo yum install python3-devel python3-pip libjpeg-devel freetype-devel zlib-devel

安装依赖库后,再使用 pip install Pillow 安装即可。

1.4 Pillow的基本结构与模块概览

Pillow 包含许多模块,涵盖图像的读取、处理、变换和保存等常见操作。以下是一些重要模块:

  • Image:核心模块,用于打开、保存和创建图像对象,是所有图像处理操作的基础。
  • ImageDraw:提供绘图功能,用于在图像上绘制线条、形状和文本。
  • ImageFont:管理字体,用于在图像上添加文本。
  • ImageFilter:内置滤镜模块,支持模糊、锐化、轮廓等效果。
  • ImageEnhance:增强模块,允许对图像进行亮度、对比度、颜色和锐度调整。

Pillow 的模块设计简洁,每个模块负责特定的图像处理任务。通过组合使用这些模块,可以实现丰富的图像处理效果。

1.5 Pillow的常见应用场景

Pillow 广泛应用于各类 Python 项目,尤其是在以下领域:

  • 图像处理:对图像进行裁剪、缩放、旋转等基本操作。
  • 图像增强:使用滤镜和增强功能对图像进行美化或风格化处理。
  • 图像识别预处理:在机器学习和计算机视觉任务中,常用 Pillow 进行图像的预处理,如调整尺寸、灰度转换等。
  • 水印与标记:添加水印、标记或文本,用于图像版权保护和信息标注。
  • 批量处理:通过自动化脚本批量处理大量图像,实现高效的图像管理。
1.6 第一个Pillow程序:打开并显示图像

接下来,我们将编写第一个简单的 Pillow 程序,通过代码展示如何使用 Pillow 打开和显示图像。

  1. 安装好 Pillow 后,使用以下代码导入库并打开一张图像:

    python 复制代码
    from PIL import Image
    
    # 打开图像
    image = Image.open("example.jpg")
    
    # 显示图像
    image.show()

    在这段代码中,我们首先导入 Image 模块,然后使用 Image.open() 函数加载本地图像文件 "example.jpg"image.show() 函数用于在系统默认图像查看器中显示图像。

  2. 保存图像

    Pillow 还支持将图像保存为不同格式:

    python 复制代码
    image.save("new_image.png")

    上述代码将图像保存为 PNG 格式,格式自动识别,使用这种方式可以轻松进行图像格式的转换。

1.7 小结

在本章中,我们介绍了 Pillow 的历史、特点和安装方法,并通过一个简单的代码示例展示了 Pillow 的基础功能。

相关推荐
MoRanzhi12035 天前
Pillow 图像分割、切片与拼接处理
图像处理·人工智能·python·计算机视觉·pillow·图像拼接·网格分块
MoRanzhi12036 天前
pillow 图像合成、透明叠加与蒙版处理
python·计算机视觉·pillow·图片处理·图像合成·透明叠加·多图层叠加
MoRanzhi12036 天前
Pillow 图像算术运算与通道计算
图像处理·人工智能·python·计算机视觉·pillow·图像差异检测·图像算术运算
MoRanzhi12037 天前
Pillow 灰度化、二值化与阈值处理
图像处理·python·pillow·二值化·图像预处理·阈值处理·灰度化
MoRanzhi12037 天前
Pillow 图像颜色模式与颜色空间转换
图像处理·python·数学建模·pillow·颜色空间转换·颜色模式·图像通道
MoRanzhi12037 天前
Pillow 图像滤波、卷积与边缘处理
图像处理·python·计算机视觉·pillow·卷积·边缘检测·图像滤波
代码小书生25 天前
pillow,一个实用的 Python 库!
开发语言·python·pillow
开源技术1 个月前
Python Pillow 优化,打开和保存速度最快提高14倍
开发语言·python·pillow
Dfreedom.1 个月前
详解四大格式(PIL/OpenCV/NumPy/PyTorch)的转换原理与场景选择
图像处理·人工智能·pytorch·opencv·numpy·pillow