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图像处理库学习②
还没有评论,来说两句吧...