(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中裁剪出一个100x100的图像,它的模式与im01一样都是“RGB”。然后通过2元组和4元组的方式,将裁剪出来的图像粘贴到图像im01上。在图像im01的(200,200)和(500,500)两个位置分别出现了裁剪出来的100x100的图像。其结果如下图所示:
定义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)位置将出现一个100x100的绿色方块。
>>> im01.paste(255,(0,0,100,100))
图像im01的(0,0)位置将出现一个100x100的红色方块。对于多通道的图像,如果变量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()