python图像处理 (一).PIL图像处理库学习①

实验环境:windows10,pyCharm

PIL库中的Image模块提供了一个同名的类,用来表示PIL图像。该模块还提供了许多工厂功能,包括从文件加载图像和创建新图像的功能

本文参考PIL官方文档

安装PIL:

pip install Pillow

1、简单例子

从文件中打开并显示一张图片

from PIL import Image  #导入PIL库中的Image模块
im = Image.open("images/mm.jpg")  #打开一张图片
im.show()  #显示图片

运行后显示如下图片:

 2、获取图片属性

format属性:

这个属性标识了图像来源,如果图像不是从文件读取它的值就是None。

from PIL import Image  #导入PIL库中的Image模块
im = Image.open("images/mm.png")  #打开一张图片
print(im.format)  #打印图像格式

运行输出如下:

输出的格式信息与图像的扩展名无关而是图片本身的格式

size属性:

图像的大小,按照像素数计算,它的返回值为宽度和高度的二元组(width,height)

from PIL import Image  #导入PIL库中的Image模块
im = Image.open("images/mm.png")  #打开一张图片
print(im.size)  #打印图像大小

运行输出如下:

mode属性:

图像的模式。这是一个字符串,指定图像使用的像素格式。典型值是“1”、“L”、“RGB”或“CMYK”。有关完整列表,请参见下表:

模式 描述
1 1位像素,黑色和白色,每个字节存储一个像素
L 8位像素,灰度图
P 8位像素,使用调色板映射到任何其他模式
RGB 3x8位像素,三个通道的颜色
RGBA 4x8位像素,三个通道的颜色与透明通道
CMYK 4×8位像素,颜色隔离
YCbCr 3x8-bit pixels, colour video format
I 32位带符号整数像素
F 32位浮点像素
from PIL import Image  #导入PIL库中的Image模块
im1 = Image.open("images/mm.png")  #打开一张png图片
im2 = Image.open("images/mm2.jpg")  #打开一张jpg图片
print(im1.mode)  #打印图像模式
print(im2.mode)  #打印图像模式

运行输出如下:

可以看出png对应的是RGBA ,jpg对应的是RGB

palette属性:

调色板表,如果图像的mode是“P”,那么这应该是ImagePalette类的一个实例。否则,应该将为None。

from PIL import Image  #导入PIL库中的Image模块
im = Image.open("images/mm.png")  #打开一张图片
print(im.mode)  #打印图像模式
print(im.palette) #打印图像palette属性

输出如下:

info属性:

存储图像相关数据的字典。文件句柄使用该字典传递从文件中读取的各种非图像信息。大多数方法在返回新的图像时都会忽略这个字典;因为字典中的键并非标准化的,对于一个方法,它不能知道自己的操作如何影响这个字典。如果用户需要这些信息,需要在方法open()返回时保存这个字典。

from PIL import Image  #导入PIL库中的Image模块
im = Image.open("images/mm.png")  #打开一张图片
print(im.info)  #打印图像信息

输出如下格式的信息 :

{'XML:com.adobe.xmp': '<?xpacket begin="\ufeff" id="W5M0MpCehiHzreSzNTczkc9d"?>\n<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c142 79.160924, 2017/07/13-01:06:39        ">\n <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">\n  <rdf:Description rdf:about=""/>\n </rdf:RDF>\n</x:xmpmeta>\n<?xpacket end="r"?>'}

3、更改图像属性

重置图像大小:

im.resize(size) ⇒ image

  返回图像的调整大小的副本。size参数以像素为单位作为的一个2元组:(宽度、高度)。

如下将图像重置大小为128*128

from PIL import Image  #导入PIL库中的Image模块
im = Image.open("images/mm.png")  #打开一张图片
print(im.size)  #打印原图大小
new_im = im.resize((128,128)) #重置图像大小
print(new_im.size)  #打印重置大小后的图像
new_im.show() #显示重置大小后的图像

 运行输出如下:

转换图像模式

im.convert(mode)⇒ image

将当前图像转换为其他模式,并且返回新的图像。

下面将一张图片转换成灰度图:

from PIL import Image  #导入PIL库中的Image模块
im = Image.open("images/mm.png")  #打开一张图片
print(im.mode)  #打印原图像的模式
im.show()  #显示原图
new_im = im.convert("L")  #将图片模式转换为灰度图模式并返回一个新对象
print(new_im.mode)  #打印转换后的图像的模式
new_im.show()  #显示转换后的图

原图和转换图对比如下:

关于更多的图像模式转换可以参考官网convert的使用

4、保存图像

im.save(outfile, options…)

im.save(outfile, format, options…)

将图像保存在给定文件名下。如果省略格式,则尽可能从文件名扩展名确定格式。此方法不返回任何值。

如下打打开一张图片重置大小和改变模式后保存到本地:

from PIL import Image  #导入PIL库中的Image模块
im = Image.open("images/mm.png")  #打开一张图片
#重置图像大小并改变图像的模式成灰度图
new_im = im.resize((128,128)).convert('L')
#保存图像到本地
new_im.save("images/new_im.png")

打开本地查看图像:

本篇结束!

下篇:python图像处理 (一).PIL图像处理库学习②

发布了17 篇原创文章 · 获赞 70 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/zzqaaasss/article/details/91129779