Python图像处理模块PIL-02

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

你可能感兴趣的:(Python图像处理模块PIL-02)