参考资料:脚本之家https://www.jb51.net/article/196007.htm
- 1、创建一张新图片
- 2、Image模块的常用属性
- 3、图片的模式转换
一、Pillow创建一张新图片
from PIL import Image
image = Image.new('RGB', (160, 90), (0, 0, 255))
image.show()
结果:
-
new(mode, size, color=0):
创建一张图片(画布),用于绘图,有3个参数。 -
mode, 图片的模式,
如“RGB”(red,green,blue三原色的缩写,表示真彩色图像)、“L”(灰度,黑白图像)等。 -
size, 图片的大小。
是一个长度为2的元组(width, height),表示的是像素大小。 -
color, 图片的颜色,默认值为0表示黑色。
可以传入长度为3的元组表示颜色,也可以传入颜色的十六进制,在版本1.1.4后,还可以直接传入颜色的英文单词,如上面代码中的(0, 0, 255)可以换成‘#0000FF'或‘blue',都是表示蓝色。
二、Image模块的常用属性
from PIL import Image
image = Image.open("santa.jpg")
print('width: ', image.width)
print('height: ', image.height)
print('size: ', image.size)
print('mode: ', image.mode)
print('format: ', image.format)
print('category: ', image.category)
print('readonly: ', image.readonly)
print('info: ', image.info)
- width属性表示图片的像素宽度,
- height属性表示图片的像素高度,width和height组成了size属性,size是一个元组。
- mode属性表示图片的模式,如RGBA,RGB,P,L等。
- format属性表示图片的格式,格式一般与图片的后缀扩展名相关。
- category属性表示图片的的类别。
- readonly属性表述图片是否为只读,值为1或0,表示的是布尔值。
- info属性表示图片的信息,是一个字典。
三、图片的模式
mode | 描述 |
---|---|
1 | 1位像素,黑白,每字节存储一个像素 |
L | 8位像素,黑白 |
P | 8位像素,使用调色板映射到任何其他模式 |
RGB | 3x8位像素,真彩色 |
RGBA | 4x8位像素,带透明蒙版的真彩色 |
CMYK | 4x8位像素,分色 |
YCbCr | 3x8位像素,彩色视频格式 |
LAB | 3x8位像素,L * a * b颜色空间 |
HSV | 3x8位像素,色相,饱和度,值颜色空间 |
I | 32位有符号整数像素 |
F | 32位浮点像素 |
1位像素的范围是0-1,0表示黑1表示白,中间表示灰。8位像素的范围是0-255,如RGB的(0, 0, 0)表示黑,(255, 255, 255)表示白,依此类推。
四、图片的模式转换
from PIL import Image
image = Image.open("santa.jpg")
print(image.mode)
image1 = image.convert('1')
print(image1.mode)
# image1.show()
image_l = image.convert('L')
print(image_l.mode)
# image_l.show()
image_p = image.convert('HSV')
print(image_p.mode)
image_p.show()
襄阳公园夜景
convert(self, mode=None, matrix=None, dither=None, palette=WEB, colors=256):
- 将当前图片转换为指定的模式,并且返回转换后的图片。如果不指定模式,则选择一种能保留图片所有信息且不使用调色板的模式(通常的结果是不转换)。
- 将彩色图像转换为灰度('L')时,使用ITU-R 601-2进行亮度转换:L = R * 299/1000 + G * 587/1000 + B * 114/1000 。
- 将灰度('L')或真彩('RGB')转换为模式'1'时,如果dither参数为'NONE',所有大于128的值均设置为255(白色),所有其他值都设为0(黑色)。
convert()方法有5个参数,都有默认值,根据转换的模式来传值:
-
mode,
图片的模式,传入需要转换的模式。部分模式之间不支持转换,代码会报错。 -
matrix,
转换矩阵。传入该参数时,应该传入由浮点数构成的元组,元组长度为4或12。matrix只支持从少数模式转换成'L'或'RGB'。 -
dither,
高频振动,用于控制颜色抖动。从模式'RGB'转换为'P'或从'RGB'或'L'转换为'1'时使用。可用的方法有'NONE'或'FLOYDSTEINBERG'(默认)。当提供了matrix参数时不使用此功能。 -
palette,
调色板,用于控制调色板的产生。从模式'RGB'转换为'P'时使用,可用的方法有'WEB'(默认)或'ADAPTIVE'。'ADAPTIVE'表示使用自适应的调色板。 -
colors,
自适应调色板使用的颜色数。当palette参数为'ADAPTIVE'时,用于控制调色板的颜色数目。默认是最大值,即256种颜色。
网友评论