当前位置 博文首页 > cuicui_ruirui的博客:python图像处理库PIL Image模块——函数
一:new()
Image.new(mode,size) ? image、Image.new(mode, size, color) ? image
含义:使用给定的变量mode和size生成新的图像。Size是给定的宽/高二元组,这是按照像素数来计算的。对于单通道图像,变量color只给定一个值;对于多通道图像,变量color给定一个元组(每个通道对应一个值)。用户也可以用颜色的名称,比如给变量color赋值为“red”。如果没有对变量color赋值,图像内容将会被全部赋值为0(图像即为黑色)。这对向该图像复制或绘制某些内容是有用的。
from PIL import Image
im=Image.new("RGB",(128,128))
im.show()
图象是黑色的
二:open()
Image.open(file) ? image、Image.open(file, mode) ? image
含义:打开并确认给定的图像文件。这个是一个懒操作;该函数只会读文件头,而真实的图像数据直到试图处理该数据才会从文件读取(调用load()方法将强行加载图像数据)。如果变量mode被设置,那必须是“r”。
三:blend()
Image.blend(image1,image2, alpha) ? image
含义:使用给定的两张图像及透明度变量alpha,插值出一张新的图像。这两张图像必须有一样的尺寸和模式。
合成公式为:out = image1 *(1.0 - alpha) + image2 * alpha
如果变量alpha为0.0,将返回第一张图像的拷贝。如果变量alpha为1.0,将返回第二张图像的拷贝。对变量alpha的值没有限制。
from PIL import Image
im1=Image.open('d:/22.jpg')
im2=Image.open('d:/44.jpg')
im=Image.blend(im1,im2,0.66)
im.show()
四:paste()
1.image.paste(image1,box)
含义:将image1粘贴到image上,其中box是粘贴的图像的大小,可以是二元组(给定是左上角)也可以是四元组,但是如果是四元组的话,四元组的值必须等同于image1的图像大小。如果image与image1的图像模式不同,image1在被粘贴的过程中,会自动转化成image的模式
from PIL import Image
img=Image.open('d:/22.jpg')
box=(0,0,100,100)
img2=img.crop(box)
print(img2.size)
print(img2.mode)
img1=Image.new('L',img.size,255)#纯白
img1.paste(img2,(0,0,100,100))
img1.show()
第一张图是22.jpg,RGB模式。img2也是RGB模式,img1的模式是L,第二张图是img1,可以看到img1中的图像是黑白L模式
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
2.image.paste(color,box)
含义:如果图像是多通道图像,那么color要写成元组的形式,如果是单通道,color是单个值
from PIL import Image
img=Image.open('d:/22.jpg')
box=(0,0,300,300)
img.paste((0,255,0),box)
img.show()
可以看到图像上一个绿色的区域?
3.image.paste(img,box,mask)
含义:使用变量mask对应的模板图像来填充所对应的区域。可以使用模式为“1”、“L”或者“RGBA”的图像作为模板图像。模板图像的尺寸必须与变量img对应的图像尺寸、box包含的尺寸大小一致。如果变量mask对应图像的值为255,则模板图像的值直接被拷贝过来;如果变量mask对应图像的值为0,则保持当前图像的原始值。变量mask对应图像的其他值,将对两张图像的值进行透明融合。
from PIL import Image
img=Image.open('d:/22.jpg')
box=(400,400,600,600)#包含大小是200*200
img2=img.crop(box)
r,g,b=img2.split()
img.paste(img2,(0,0,200,200),r)#三者的大小都得是200*200,否则报错
img.show()
4.image.paste(color,box,mask)
from PIL import Image
img=Image.open('d:/22.jpg')
box=(400,400,600,600)
img2=img.crop(box)
r,g,b=img2.split()
img.paste((0,255,0),(0,0,200,200),r)
img.show()
使用颜色来填充指定区域
五:getbands()
含义:返回包括每个通道名称的元组,如果图片为RGB模式,则返回的值为(“R”,'G‘,'B')
from PIL import Image
img=Image.open('d:/22.jpg')
print(img.getbands())
结果为('R', 'G', 'B')
cs