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

相关文章

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

Java Scanner类解析与实战教程

《JavaScanner类解析与实战教程》JavaScanner类(java.util包)是文本输入解析工具,支持基本类型和字符串读取,基于Readable接口与正则分隔符实现,适用于控制台、文件输... 目录一、核心设计与工作原理1.底层依赖2.解析机制A.核心逻辑基于分隔符(delimiter)和模式匹

Spring创建Bean的八种主要方式详解

《Spring创建Bean的八种主要方式详解》Spring(尤其是SpringBoot)提供了多种方式来让容器创建和管理Bean,@Component、@Configuration+@Bean、@En... 目录引言一、Spring 创建 Bean 的 8 种主要方式1. @Component 及其衍生注解

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet