Python图像处理库PIL的Image模块介绍(四)

  • Post author:
  • Post category:python



(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






>>>from PIL import Image


>>>





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






>>>from PIL import Image


>>> 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()



版权声明:本文为icamera0原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。