第1章: 初识Pillow(PIL)

embedded/2024/11/14 22:04:55/
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:

pip install Pillow
1.3.2 系统依赖库

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

# 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 后,使用以下代码导入库并打开一张图像:

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

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

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

    image.save("new_image.png")
    

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

1.7 小结

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


http://www.ppmy.cn/embedded/136979.html

相关文章

Tokenformer:基于参数标记化的高效可扩展Transformer架构

本文是对发表于arXiv的论文 “TOKENFORMER: RETHINKING TRANSFORMER SCALING WITH TOKENIZED MODEL PARAMETERS” 的深入解读与扩展分析。主要探讨了一种革新性的Transformer架构设计方案,该方案通过参数标记化实现了模型的高效扩展和计算优化。 论文动机 如今的人…

Python数据分析NumPy和pandas(二十八、使用pandas和seaborn绘图)

matplotlib 是一个相对很基础的工具。可以从其基本组件组装绘图:数据显示(即绘图类型:线、条、框、散点、等值线等)、图例、标题、刻度标签和注释等。 在 pandas 中,我们可能有多个数据列,以及行和列标签。…

ubuntu18.04 配置安卓编译环境

目前有个项目,验收时有个要求是在linux中进行编译打包生成apk文件。我平时都是在windows环境android studio中进行打包的,花了半天时间研究了一下,记录如下: 安装安卓sdk cd /opt wget https://dl.google.com/android/reposito…

HCIP(11)-期中综合实验(BGP、Peer、OSPF、VLAN、IP、Route-Policy)

实验要求 1、该拓扑为公司网络,其中包括公司总部、公司分部以及公司骨干网,不包含运营商公网部分。 2、设备名称均使用拓扑上名称改名,并且区分大小写。 3、整张拓扑均使用私网地址进行配置。 4、整张网络中,运行OSPF协议或者BGP…

Day106:代码审计-PHP原生开发篇文件安全上传监控功能定位关键搜索1day挖掘

知识点: PHP审计-原生开发-文件上传&文件删除-Emlog PHP审计-原生开发-文件上传&文件包含-通达OA emlog-文件上传&文件删除 文件安全挖掘点: 1、脚本文件名:upload.php、up.php、upfile.php、del.php、delfile.php、down.php、…

【计算机视觉】FusionGAN

1. FusionGAN论文阅读 abreheret/FusionGAN: Pytorch implementation of "Generating a Fusion Image: One’s Identity and Another’s Shape" 1.1. WHY 在现实世界中,将对象或人物转换为期望的形状是一种常用技术,但现有的图像翻译方法在处理身份和形状时存在…

【极限编程(XP)】

极限编程(XP)简介 定义与核心价值观:极限编程(Extreme Programming,XP)是一种轻量级、敏捷的软件开发方法。它强调团队合作、客户参与、持续测试和快速反馈等价值观,旨在提高软件开发的效率和质…

高性能分布式缓存Redis-数据管理与性能提升之道

一、持久化原理 Redis是内存数据库,数据都是存储在内存中,为了避免进程退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘;当下次Redis重启时,利用持久化文件实现数据恢复。除此…