Image模块中的函数
- 1.open
- 2.new
- 3.blend
- 4.composite
- 5.eval
- 6.merge
Image模块中函数的返回值皆是一个Image对象,因而可以通过该模块中的函数来创建Image类的实例。
1.open
Image.open(file, mode)
- file 图像文件的全路径
- mode 打开文件的方式,默认值为
r
- returns 一个Image对象
功能:以mode为打开方式,加载全路径为file的图像
说明:创建了Image类的实例后,便可以通过类的方法show()
来显示图像。
示例: 打开图像并显示
#导入Image模块
from PIL import Image
#打开名为‘image.jpg’的图像
img = Image.open('image.jpg')
#显示
img.show()
运行结果:
调用图片查看器,打开了该文件目录下的名为"image.jpg"的图像。
2.new
Image.new(mode, size, color=0)
- mode 所要创建的图像模式(RGB、RGBA等)
- size 所要创建的图像尺寸
- color 所要创建图像的颜色,默认为黑色,对于创建RGB之类的图像;既可以用元组来确定颜色,也可以用ImageColor模块支持的颜色字符,如,blue为蓝色,red为红色……
- returns 一个Image对象
功能:创建一张模式为mode,尺寸大小为size,颜色为color的图像。
示例: 创建模式为RGB,分辨率为400x200,颜色为红色的图像
#导入Image模块
from PIL import Image
#创建模式为RGB,分辨率为400x200,颜色为红色的图像
img_1 = Image.new('RGB',(400,200),(255,0,0)) #颜色利用元组确定
img_2 = Image.new('RGB',(400,200),'red') #颜色利用ImageColor模块里颜色字符确定
# 显示图像
img_1.show()
img_2.show()
运行结果:
3.blend
Image.blend(im1, im2, alpha)
- im1 参与混合的图像1,混合过程中透明度设置为 (1-apha)
- im2 参与混合的图像2,混合过程中透明度设置为 (apha)
- alpha 混合透明度,取值为[0-1]
- returns 一个Image对象
功能:将im1,im2两幅图像(两者必须具有相同的mode和size)以一定透明度混合;
混合方法:(im1 x (1-alpha) + im2 x alpha)
特例:
- 当alpha为0,返回im1图像的副本
- 当alpha为1,返回im2图像的副本
示例:
#导入Image模块
from PIL import Image
#打开图像im1
im1 = Image.open('im1.png')
#打开图像im2
im2 = Image.open('im2.png')
#以alpha=0混合该两张图像,得到的是im1原图像
img0 = Image.blend(im1,im2,0)
img0.show()
#以alpha=1混合该两张图像,得到的是im2原图像
img1 = Image.blend(im1,im2,1)
img1.show()
#以alpha=0.5混合该两张图像,得到一个新的图像对象img
img = Image.blend(im1,im2,0.5)
img.show()
运行结果:
4.composite
Image.composite(im1, im2, mask)
- im1 参与混合的图像1
- im2 参与混合的图像2
- mask 混合遮罩
- returns 一个Image对象
功能:使用mask混合im1和im2;,作为mask的图像模式可以是“1
”、“L
”、“RGBA
”(它们mode和size必须相同,且mask应具有一定的透明度)。
示例:
#导入Image模块
from PIL import Image
#打开图像im1
im1 = Image.open('im1.png')
#打开图像im2
im2 = Image.open('im2.png')
#打开图像im3
mask = Image.open('im3.png')
#将图像im3作为mask来混合im1和im2
img = Image.composite(im1,im2,mask)
img.show()
运行结果:
说明:该函数关键在于图像的选择,作为mask的图像必须要是透明的,否则运行过后看不出效果。
5.eval
Image.eval(image, function)
- image 输入的图像
- function 给输入图像的每个像素应用该函数
- returns 一个Image对象
功能:
使用变量function对应的函数(该函数只允许接收一个整数类型参数)处理变量image所代表图像中的每一个像素点,如果变量image所代表图像有多个通道,那变量function对应的函数作用于每一个通道。
示例:
#导入Image模块
from PIL import Image
#打开image.jpg图像
img = Image.open('image.jpg')
# 定义一个函数
def func(x):
return x*2
# 对图像im每个像素点进行func中的操作
img_new = Image.eval(img, func)
img_new.show()
运行结果:
6.merge
Image.merge(mode, bands)
- mode 输出图像的模式
- bands 一个图像的元组或者列表,包含输出图像中每个波段的一个单一波段图像,所有通道都必须同样大小
- returns 一个Image对象
示例:
#导入模块Image
from PIL import Image
#打开图像im1和im2
im1 = Image.open("im1.png")
im2 = Image.open("im2.png")
#将图像im1和im2通道分离
r1,g1,b1,a1 = im1.split()
r2,g2,b2,a2 = im2.split()
#合成新的图像
im_merge = Image.merge("RGB",[r1,g2,b2])
im_merge.save("img_new.png")
运行结果: