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卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是

mysql如何查看当前连接数

《mysql如何查看当前连接数》:本文主要介绍mysql如何查看当前连接数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql查看当前连接数查看mysql数据库允许最大连接数总结mysql查看当前连接数查看当前连接数SHOW STATUS LIKE

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

Linux安装MySQL的教程

《Linux安装MySQL的教程》:本文主要介绍Linux安装MySQL的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux安装mysql1.Mysql官网2.我的存放路径3.解压mysql文件到当前目录4.重命名一下5.创建mysql用户组和用户并修

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详