Image类函数
1. new
Image.new(mode, size, color)
根据给定的mode(图像模式),size(图像尺寸)生成新的图像,图像的内容由color来决定,对于单通道模式,color为一个值,对于多通道模式,color可以是元组,一个通道对应一个值,color也可以为颜色名称,如'blue',如果color为空,则图像不会初始化,默认值为0
实例:
from PIL import Image
new_image1 = Image.new('RGB', (100, 100), 'red')
new_image2 = Image.new('RGB', (100, 100), '#00ffaa')
new_image3 = Image.new('RGB', (100, 100), 'RGB(120,158,60)')
new_image4 = Image.new('RGB', (100, 100), (125,183,250))
2. open
Image.open(file, mode)
打开并确定给定的图像文件,该方法只会读取文件头,只有当处理该数据的时候才会调用load()方法加载数据,如果mode设置,需设置为'r'
用户也可以指定字符串或者文件对象为file的值,文件必须实现read(),seek()和tell()方法,并且以二进制模式打开
实例:
from PIL import Image
image1 = Image.open('source.jpg')
image2 = Image.open('source.jpg', 'r')
3. blend
Image.blend(image1, image2, alpha)
合成公式:out = image1 *(1.0 - alpha) + image2 * alpha
使用给定的两张图像,插入透明度为alpha,生成一个新的图像,这两张图像必须要有一样的size和mode
from PIL import Image
image1 = Image.open('source1.jpg')
image2 = Image.open('source2.jpg')
new_image = Image.blend(image1, image2, 0.6)
4. composite
Image.composite(image1, image2, mask)
使用给定的两张图像image1,image2,插入透明度为mask的图像,生成一张新的图像,mask的模式可以为'1', 'L', 'RGBA',所有的图像必须有相同的size
from PIL import Image
image1 = Image.open('source1.jpg')
image2 = Image.open('source2.jpg')
r, g, b = image1.split()
new_image = Image.composite(image1, image2, r)
5. eval
Image.eval(image, function)
function函数处理对应的image图像的每个像素点,如果image有多个通道,则每个通道的每个像素点都处理,且只处理一次
from PIL import Image
image = Image.open('source.jpg')
new_image = Image.eval(image, lambda x: x ** 2 / 255)
6. frombuffer
Image.frombuffer(mode, size, data, decoder, parameters)
使用标准的“raw”解码器,从字符串或者buffer对象中的像素数据产生一个图像存储。对于一些模式,这个图像存储与原始的buffer(这意味着对原始buffer对象的改变体现在图像本身)共享内存。并非所有的模式都可以共享内存;支持的模式有“L”,“RGBX”,“RGBA”和“CMYK”。对于其他模式,这个函数与fromstring()函数一致。
frombuffer(mode,size,data,"raw",mode,0,1)
7. fromarray
Image.fromarray(obj, mode=None)
从导出阵列接口的对象创建映像内存(使用缓冲区协议),如果obj不连续,则调用tobytes方法并使用frombuffer()。
实例:
image1= Image.open('source.jpg')
image1.show()
arr= np.array(image1)** 2 / 255
image2 = Image.fromarray(ima,'RGB')
image2.show()
8. merge
Image.merge(mode,bands) ⇒ image
使用一些单通道图像,创建一个新的图像。变量bands为一个图像的元组或者列表,每个通道的模式由变量mode描述。所有通道必须有相同的尺寸。
mode与bands:
len(ImageMode.getmode(mode).bands)= len(bands)
实例:
image2= Image.open('gtyx.jpg')# type:Image.Image
image1= Image.eval(image2, lambda x: x** 2 / 255)
r1, g1, b1= image1.split()
r2, g2, b2= image2.split()
new_im= Image.merge('RGB', [r1, g2, b2])
new_im.show()