当前位置 博文首页 > cuicui_ruirui的博客:python图像处理库PIL Image模块——函数

    cuicui_ruirui的博客:python图像处理库PIL Image模块——函数

    作者:[db:作者] 时间:2021-09-02 16:25

    一: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