(Image模块方法16-25)
16、
Paste
定义
1
:
im.paste(image,box)
含义
1
:将一张图粘贴到另一张图像上。变量
box
或者是一个给定左上角的
2
元组,或者是定义了左,上,右和下像素坐标的
4
元组,或者为空(与(
0
,
0
)一样)。如果给定
4
元组,被粘贴的图像的尺寸必须与区域尺寸一样。
如果模式不匹配,被粘贴的图像将被转换为当前图像的模式。
例子
1
:
>>>from PIL import Image
>>>
im01= Image.open(“D:\\Code\\Python\\test\\img\\test01.jpg”)
>>>box=[0,0,100,100]
>>>im_crop = im01.crop(box)
>>>im_crop.size
(100, 100)
>>>im_crop.mode
‘RGB’
>>>im01.paste(im_crop, (200,200))
>>>im01.paste(im_crop, (500,500,600,600))
>>>im01.show()
我们先从图像
im01
中裁剪出一个
100×100
的图像,它的模式与
im01
一样都是“
RGB
”。然后通过
2
元组和
4
元组的方式,将裁剪出来的图像粘贴到图像
im01
上。在图像
im01
的(
200
,
200
)和(
500
,
500
)两个位置分别出现了裁剪出来的
100×100
的图像。其结果如下图所示:
定义
2
:
im.paste(colour,box)
含义
2
:它与定义
1
一样,但是它使用同一种颜色填充变量
box
对应的区域。对于单通道图像,变量
colour
为单个颜色值;对于多通道,则为一个元组。
例子
2
:
>>>
im01= Image.open(“D:\\Code\\Python\\test\\img\\test01.jpg”)
>>> im01.paste((0,256,0),(0,0,100,100))
图像
im01
的(
0
,
0
)位置将出现一个
100×100
的绿色方块。
>>> im01.paste(255,(0,0,100,100))
图像
im01
的(
0
,
0
)位置将出现一个
100×100
的红色方块。对于多通道的图像,如果变量
colour
只给定一个数值,将只会应用于图像的第一个通道。如果是“
RGB
”模式的图像,将应用于红色通道。
定义
3
:
im.paste(image,box, mask)
含义
3
:与定义
1
一样,但是它使用变量
mask
对应的模板图像来填充所对应的区域。可以使用模式为“
1
”、“
L
”或者“
RGBA
”的图像作为模板图像。模板图像的尺寸必须与变量
image
对应的图像尺寸一致。如果变量
mask
对应图像的值为
255
,则模板图像的值直接被拷贝过来;如果变量
mask
对应图像的值为
0
,则保持当前图像的原始值。变量
mask
对应图像的其他值,将对两张图像的值进行透明融合。
注意:如果变量
image
对应的为“
RGBA
”图像,即粘贴的图像模式为“
RGBA
”,则
alpha
通道被忽略。用户可以使用同样的图像作为原图像和模板图像。
例子
3
:
>>> im01 =Image.open(“D:\\Code\\Python\\test\\img\\test01.jpg”)
>>> box =[500,500,600,600]
>>> im_crop =im01.crop(box)
>>> r,g,b =im_crop.split()
>>>im01.paste(im_crop, (0,0,100,100), r)
>>> im01.show()