Pillow教程01:初识Pillow模块(创建Image对象+查看属性+图片的保存与缩放)

本文主要是介绍Pillow教程01:初识Pillow模块(创建Image对象+查看属性+图片的保存与缩放),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

--------------Pillow教程集合---------------

Python项目18:使用Pillow模块,随机生成4位数的图片验证码

Python教程93:初识Pillow模块(创建Image对象+查看属性+图片的保存与缩放)

Pillow教程02:图片的裁剪+复制粘贴+旋转角度+翻转+降噪滤镜(平滑、锐化、边缘检测)

Pillow教程03:图像处理的基本步骤+分离split+合并merge+混合blend+composite遮罩

Pillow教程04:学习Draw绘制+Font字体+alpha composite方法,给图片添加文字水印

PIL( Python Imaging Library)是 Python 的第三方图像处理库,由于其功能丰富,API 简洁易用,因此深受好评。自2011 年以来,由于 PIL 库更新缓慢,目前仅支持 Python 2.7 版本,这明显无法满足 Python3 版本的使用需求。于是一群 Python 社区的志愿者(主要贡献者:Alex Clark 和 Contributors)在 PIL 库的基础上开发了一个支持 Python3 版本的图像处理库,这就是Pillow。
Pillow 不仅是 PIL 库的复制版,而且它又在 PIL 库的基础上增加了许多新的特性。Pillow 发展至今,已经成为了比 PIL 更具活力的图像处理库。
Pillow库支持多种图片格式,包括BMP、GIF、JPEG、PNG、TIFF等,并提供了大量的图片处理函数和方法,如图片的读取、显示、旋转、缩放、裁剪、转换等操作。这使得Pillow成为Python中处理图像的一个强大工具。安装Pillow库通常可以通过pip命令实现。

pip install pillow

1.创建Image对象的方法:open() +new()方法

from PIL import Image# 打开图像文件
img = Image.open('貂蝉.png')# 显示图像  
img.show()

1.1.Image.new() 用于创建一个新的图像对象。这个方法接受三个参数:模式(mode)、大小(size)和颜色(color)。
在这里插入图片描述
参数说明:

mode:图像的模式,定义了图像中像素的数据类型和排列方式。常见的模式包括 ‘L’(灰度模式,每个像素为8位)、‘RGB’(红绿蓝模式,每个像素为24位)、‘RGBA’(红绿蓝加透明度模式,每个像素为32位)等。
size:图像的大小,以像素为单位,通常是一个二元组 (width, height)。
color:图像的颜色。如果不指定颜色,图像将填充为零(通常为黑色),参数值支持(R,G,B)三元组数字格式、颜色的十六进制值以及颜色英文单词。

from PIL import Image  # 创建一个 300x300 像素的红色 RGB 图像 
# color="#ff0000" 表示红色
img = Image.new('RGB', (300, 300), 'red')  # 显示图像  
img.show()

2.查看img对象属性:

# @Author : 小红牛
# 微信公众号:WdPython
from PIL import Image# 打开图像文件
img = Image.open('example.png')# 1.获取图像的格式
format = img.format
print(f'Format: {format}')
# Format: PNG# 2.获取图像的尺寸(宽度和高度)
width, height = img.size
print(f'Width: {width}, Height: {height}')
# 输出 Width: 142, Height: 160# 3.获取图像的模式(例如,RGB)
mode = img.mode
print(f'Mode: {mode}')
# Mode: RGB
# 4.获取(50,50)处像素值
print('获取(50,50)处像素值:', img.getpixel((50, 50)))
# 获取(50,50)处像素值: (255, 255, 255)

3.图片保存方法

convert()函数:当你需要改变图像的模式或调色板时,应该使用 convert() 函数。例如,如果你有一张RGB图像,但你只需要灰度信息,你可以使用 convert(‘L’) 来将其转换为灰度图像。这个函数允许你以不同的方式表示图像数据,以适应特定的处理需求或存储需求。

不是所有的模式转换都是可逆的。一旦图像被转换为一种模式,可能会丢失一些信息,使得无法完全恢复到原始状态。转换模式时,可能需要根据具体需求调整参数以获得最佳结果。

Image.convert() 方法接受几个可选参数,以控制转换过程:

mode:请求的输出模式。例如,‘L’ 表示灰度模式,‘RGB’ 表示红绿蓝模式,‘P’ 表示调色板模式等。如果省略此参数,Pillow 将选择一种能够无需调色板即可表示图像和调色板中所有信息的模式。

matrix:一个可选的转换矩阵,用于将像素值从一种空间映射到另一种空间。如果提供,它应该是一个包含浮点数的 4 元组(对于灰度模式)或 12 元组(对于 RGB 模式)。

dither:抖动方法,当从 ‘RGB’ 转换为 ‘P’ 模式或从 ‘RGB’ 或 ‘L’ 转换为 ‘1’ 模式时使用。可用的方法包括 ‘NONE’(无抖动)和 ‘FLOYDSTEINBERG’(默认,Floyd-Steinberg 抖动算法)。

palette:从 ‘RGB’ 转换为 ‘P’ 模式时使用的调色板。可用的调色板包括 ‘WEB’(使用 Web 调色板)和 ‘ADAPTIVE’(使用自适应算法创建调色板)。

colors:用于 ‘ADAPTIVE’ 调色板的颜色数。默认值为 256。

from PIL import Image  
# 打开一张 RGB 图像  
img = Image.open('example.jpg')  # 处理,转换为灰度图像  
gray_img = img.convert('L')  # 保存灰度图像为JPEG格式  
gray_img.save('output_gray.jpg')

save()函数:当你需要将处理后的图像保存到文件时,可以使用 save() 函数。这个函数允许你指定保存的文件名、格式。无论你之前是否使用了 convert() 函数,你最终都需要使用 save() 来将图像保存到磁盘上。

from PIL import Image# 1.将png转化成jpg格式
image = Image.open('example.png')
image.save('output.jpg', format='jpeg')
# 2.读取保存的图片格式
image2 = Image.open('output.jpg')
print(image2.format)  # JPEG

4.图像缩放,可以通过resize()方法来实现,resize() 方法使用默认的插值方法(通常是 Image.BICUBIC),但你也可以通过传递一个额外的参数来指定不同的插值方法。

resized_image = image.resize(new_size, Image.NEAREST)

可用的插值方法包括:
Image.NEAREST:最近邻插值(速度最快,但质量可能较差)。
Image.BILINEAR:双线性插值(速度较快,质量较好)。
Image.BICUBIC:双三次插值(速度较慢,但质量通常最好)。
Image.LANCZOS:Lanczos 插值(需要 PILLOW 额外支持)。


# @Author : 小红牛
# 微信公众号:WdPython
from PIL import Image  # 打开图像文件  
image = Image.open("path_to_your_image.jpg")  # 获取原始图像的宽度和高度  
original_width, original_height = image.size  # 定义新的宽度和高度,这里我们将其缩小为原来的一半  
new_width = original_width // 2  
new_height = original_height // 2  # 使用resize()方法进行图像缩放  
resized_image = image.resize((new_width, new_height))  # 保存缩放后的图像  
resized_image.save("resized_image.jpg")  

完毕!!感谢您的收看

----------★★历史博文集合★★----------

我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具 NumPy Pygame 图像处理

这篇关于Pillow教程01:初识Pillow模块(创建Image对象+查看属性+图片的保存与缩放)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/846084

相关文章

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Mysql实现范围分区表(新增、删除、重组、查看)

《Mysql实现范围分区表(新增、删除、重组、查看)》MySQL分区表的四种类型(范围、哈希、列表、键值),主要介绍了范围分区的创建、查询、添加、删除及重组织操作,具有一定的参考价值,感兴趣的可以了解... 目录一、mysql分区表分类二、范围分区(Range Partitioning1、新建分区表:2、分

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实