Pillow之Image模块(二)

Image模块中的函数


Image模块中函数的返回值皆是一个Image对象,因而可以通过该模块中的函数来创建Image类的实例。


1.open

Image.open(file, mode)
  • file          图像文件的全路径
  • mode        打开文件的方式,默认值为r
  • returns       一个Image对象

功能:以mode为打开方式,加载全路径为file的图像

说明:创建了Image类的实例后,便可以通过类的方法show()来显示图像。

示例: 打开图像并显示

 #导入Image模块
from PIL import Image  
#打开名为‘image.jpg’的图像             
img = Image.open('image.jpg')        
#显示
img.show()                           

运行结果:
调用图片查看器,打开了该文件目录下的名为"image.jpg"的图像。
在这里插入图片描述


2.new

Image.new(mode, size, color=0)
  • mode          所要创建的图像模式(RGB、RGBA等)
  • size          所要创建的图像尺寸
  • color          所要创建图像的颜色,默认为黑色,对于创建RGB之类的图像;既可以用元组来确定颜色,也可以用ImageColor模块支持的颜色字符,如,blue为蓝色,red为红色……
  • returns         一个Image对象

功能:创建一张模式为mode,尺寸大小为size,颜色为color的图像。

示例: 创建模式为RGB,分辨率为400x200,颜色为红色的图像

#导入Image模块
from PIL import Image
#创建模式为RGB,分辨率为400x200,颜色为红色的图像
img_1 = Image.new('RGB',(400,200),(255,0,0))  #颜色利用元组确定
img_2 = Image.new('RGB',(400,200),'red')      #颜色利用ImageColor模块里颜色字符确定
# 显示图像
img_1.show()
img_2.show()

运行结果:
在这里插入图片描述


3.blend

Image.blend(im1, im2, alpha)
  • im1          参与混合的图像1,混合过程中透明度设置为 (1-apha)
  • im2          参与混合的图像2,混合过程中透明度设置为 (apha)
  • alpha          混合透明度,取值为[0-1]
  • returns        一个Image对象

功能:将im1,im2两幅图像(两者必须具有相同的mode和size)以一定透明度混合;
混合方法(im1 x (1-alpha) + im2 x alpha)
特例

  • 当alpha为0,返回im1图像的副本
  • 当alpha为1,返回im2图像的副本

示例

#导入Image模块
from PIL import Image
#打开图像im1
im1 = Image.open('im1.png')
#打开图像im2
im2 = Image.open('im2.png')
#以alpha=0混合该两张图像,得到的是im1原图像
img0 = Image.blend(im1,im2,0)
img0.show()
#以alpha=1混合该两张图像,得到的是im2原图像
img1 = Image.blend(im1,im2,1)
img1.show()
#以alpha=0.5混合该两张图像,得到一个新的图像对象img
img = Image.blend(im1,im2,0.5)
img.show()

运行结果:
在这里插入图片描述


4.composite

Image.composite(im1, im2, mask)
  • im1           参与混合的图像1
  • im2           参与混合的图像2
  • mask           混合遮罩
  • returns         一个Image对象

功能:使用mask混合im1im2;,作为mask的图像模式可以是“1”、“L”、“RGBA”(它们mode和size必须相同,且mask应具有一定的透明度)。

示例

#导入Image模块
from PIL import Image
#打开图像im1
im1 = Image.open('im1.png')
#打开图像im2
im2 = Image.open('im2.png')
#打开图像im3
mask = Image.open('im3.png')
#将图像im3作为mask来混合im1和im2
img = Image.composite(im1,im2,mask)
img.show()

运行结果:
在这里插入图片描述

说明:该函数关键在于图像的选择,作为mask的图像必须要是透明的,否则运行过后看不出效果。


5.eval

Image.eval(image, function)
  • image         输入的图像
  • function        给输入图像的每个像素应用该函数
  • returns       一个Image对象

功能
  使用变量function对应的函数(该函数只允许接收一个整数类型参数)处理变量image所代表图像中的每一个像素点,如果变量image所代表图像有多个通道,那变量function对应的函数作用于每一个通道。
示例

#导入Image模块
from PIL import Image
#打开image.jpg图像
img = Image.open('image.jpg')
# 定义一个函数
def func(x):
    return x*2
# 对图像im每个像素点进行func中的操作
img_new = Image.eval(img, func)
img_new.show()

运行结果:
在这里插入图片描述


6.merge

Image.merge(mode, bands)
  • mode         输出图像的模式
  • bands          一个图像的元组或者列表,包含输出图像中每个波段的一个单一波段图像,所有通道都必须同样大小
  • returns        一个Image对象

示例

#导入模块Image
from PIL import Image
#打开图像im1和im2
im1 = Image.open("im1.png")
im2 = Image.open("im2.png")
#将图像im1和im2通道分离
r1,g1,b1,a1 = im1.split()
r2,g2,b2,a2 = im2.split()
#合成新的图像
im_merge = Image.merge("RGB",[r1,g2,b2])
im_merge.save("img_new.png")

运行结果:
在这里插入图片描述

发布了1 篇原创文章 · 获赞 0 · 访问量 68

猜你喜欢

转载自blog.csdn.net/weixin_44191535/article/details/104262085