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

参数说明:

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  
 **自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/f98d8d02e63638a87056d8c54e5d5b0d.png)

![img](https://img-blog.csdnimg.cn/img_convert/64a9a16cae2fe88bc35b4ae17d7567db.png)

![img](https://img-blog.csdnimg.cn/img_convert/0ae70871da075588a81974f1b89ff76d.png)

![img](https://img-blog.csdnimg.cn/img_convert/460aba67a69259616ea0abeb8373252d.png)

![img](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)

![img](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)**

上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)**

<img src="https://img-community.csdnimg.cn/images/fd6ebf0d450a4dbea7428752dc7ffd34.jpg" alt="img" style="zoom:50%;" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值