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

相关文章

Window Server创建2台服务器的故障转移群集的图文教程

《WindowServer创建2台服务器的故障转移群集的图文教程》本文主要介绍了在WindowsServer系统上创建一个包含两台成员服务器的故障转移群集,文中通过图文示例介绍的非常详细,对大家的... 目录一、 准备条件二、在ServerB安装故障转移群集三、在ServerC安装故障转移群集,操作与Ser

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

Window Server2016 AD域的创建的方法步骤

《WindowServer2016AD域的创建的方法步骤》本文主要介绍了WindowServer2016AD域的创建的方法步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、准备条件二、在ServerA服务器中常见AD域管理器:三、创建AD域,域地址为“test.ly”

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

C#中图片如何自适应pictureBox大小

《C#中图片如何自适应pictureBox大小》文章描述了如何在C#中实现图片自适应pictureBox大小,并展示修改前后的效果,修改步骤包括两步,作者分享了个人经验,希望对大家有所帮助... 目录C#图片自适应pictureBox大小编程修改步骤总结C#图片自适应pictureBox大小上图中“z轴

Python如何使用seleniumwire接管Chrome查看控制台中参数

《Python如何使用seleniumwire接管Chrome查看控制台中参数》文章介绍了如何使用Python的seleniumwire库来接管Chrome浏览器,并通过控制台查看接口参数,本文给大家... 1、cmd打开控制台,启动谷歌并制定端口号,找不到文件的加环境变量chrome.exe --rem

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

PyTorch使用教程之Tensor包详解

《PyTorch使用教程之Tensor包详解》这篇文章介绍了PyTorch中的张量(Tensor)数据结构,包括张量的数据类型、初始化、常用操作、属性等,张量是PyTorch框架中的核心数据结构,支持... 目录1、张量Tensor2、数据类型3、初始化(构造张量)4、常用操作5、常用属性5.1 存储(st

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取