学习自官方文档
Image.blend(im1, im2, alpha)
- im1 - 第一张图片。
- im2 - 第二张图片。必须与第一张图像具有相同的模式和大小。
- alpha - 透明度变量。如果alpha为0.0,则返回第一张图像的副本。如果alpha为1.0,则返回第二个图像的副本。alpha值没有限制。如有必要,剪切结果以适应允许的输出范围。对alpha变量的值无限制。
im1 = Image.open('timg.jpg')
im11=im1.resize((600,400))
im2 = Image.open('IMG3.jpg')
im22=im2.resize((600,400)) # 将二者设为相同大小
im = Image.blend(im11, im22, 0.3)
# 进行运算:out = image1 * (1.0 - alpha) + image2 * alpha
Image.composite(im1, im2, mask)
- image1 - 第一张图片。
- image2 - 第二张图片。必须与第一张图像具有相同的模式和大小。
- mask - 掩码图像。该图像可以具有模式“1”,“L”或“RGBA”,并且必须具有与其他两个图像相同的尺寸。
mask = Image.new('L', im22.size,'green')
im = Image.composite(im11, im22, mask)
Image.new(mode, size, color=0)
color可缺省,则为黑色图像
oo = Image.new('RGB', (300, 300), '#4B0082')
oo2 = Image.new('RGB', (300, 300), 'blue')
Image.eval(image, *args)
将函数(应该采用一个参数)应用于给定图像中的每个像素。如果图像具有多个频带,则对每个频带应用相同的功能。请注意,对每个可能的像素值评估函数一次,因此不能使用随机组件或其他生成器。
def func1(x):
return x*0.3
def func2(x):
return x*2.9
im2 = Image.eval(im1, func1)
im3 = Image.eval(im1, func2)
Image.merge(mode, bands)
将一组单波段图像合并为一个新的多波段图像。bands为一个图像的元组或列表。所有bands必须有相同的尺寸。两张图片的大小也要相同。
im1 = Image.open('timg.jpg')
im11 = im1.resize((400, 400))
im2 = Image.open('IMG3.jpg')
im22 = im2.resize((400,400))
r1, g1, b1 = im11.split()
r2, g2, b2 = im22.split()
new = [r1, g2, b2]
im3 = Image.merge('RGB', new)
draft(mode, size)
配置图像文件加载器,使其返回尽可能匹配给定模式和大小的图像版本。此方法会修改Image
对象。如果图像已加载,则此方法无效。它目前仅适用于JPEG和PCD图像。
im22 = im2.draft('L',(300,300))
getbands()
返回包含此图像中每个波段名称的元组。例如,RGB图像上的getband返回(“R”,“G”,“B”)。
print(im.getbands()) # Returns ('R', 'G', 'B')
split()
将图像拆分为单独的波段。此方法从图像返回单个图像带的元组。例如,分割“RGB”图像会创建三个新图像,每个图像包含一个原始波段(红色,绿色,蓝色)的副本。
r1, g1, b1 = im11.split()
getchannel(channel)
channel:要返回的频道,可以是索引(0表示“RGB”的“R”通道)或通道名称(“RGB”的“G”)。返回的是“L”模式下的图像。
im22 = im2.getchannel('G')
getbbox()
计算图像中非零区域的边界框。返回左上右下坐标四元组,图像为空则返回None。
print(im22.getbbox())
getcolor(maxcolors = 256)
返回此图像中使用的颜色列表。maxcolors:最大颜色数,如果超过此数量,则此方法返回None。默认限制为256色。
我在使用时一直返回的是none,经过查阅发现:
print(im2.getcolors(im2.size[0]*im2.size[1]))
则可返回颜色列表。
resize(size, resample=0, box= None)
调整图片大小。size:二元组(宽度,高度)。resample:可以是PIL.Image.NEAREST
,PIL.Image.BOX
,PIL.Image.BILINEAR
,PIL.Image.HAMMING
, PIL.Image.BICUBIC
或PIL.Image.LANCZOS
。如果省略,或者图像具有模式“1”或“P”,则设置PIL.Image.NEAREST。box:
一个可选的4元组浮点数,给出应缩放的源图像区域。
ii = im2.resize((400,400), Image.BILINEAR, (10, 10, 600,500))
rotate(angle,resample = 0,expand = 0,center = None,translate = None,fillcolor = None )
逆时针旋转图像。
- angle - 逆时针方向。
- resample - 可选的重采样过滤器。这可以是
PIL.Image.NEAREST
(use nearest neighbour),PIL.Image.BILINEAR
(2x2环境中的线性插值)或PIL.Image.BICUBIC
(4x4环境中的三次样条插值)之一。如果省略,或者图像具有模式“1”或“P”,则设置PIL.Image.NEAREST
。 - expand - 可选的扩展标志。如果为true,则展开输出图像以使其足够大以容纳整个旋转图像。如果为false或省略,则使输出图像与输入图像的大小相同。请注意,展开标志假定围绕中心旋转而不进行平移。
- center - 可选的旋转中心(2元组)。原点是左上角。默认值是图像的中心。
- translate - 可选的后旋转翻译(2元组)。
- fillcolor - 旋转图像外部区域的可选颜色。
ii = im2.rotate(30,Image.NEAREST, 0, (30,30), None, 'red')
transpose(),transform()的用法
paste(im, box=None, mask=None)
将另一张图像粘贴到此图像中。box参数是左,上,右和下像素坐标的4元组,如果使用2元组,则将其视为左上角。如果省略或无,则将源粘贴到左上角。
box = (200,200,400,400)
temp = im2.crop(box)
r, g, b = temp.split()
im2.paste(temp, (100,100,300,300),b)
属性:
format
此属性标示图像来源,若图像不是从文件读取它的值就是None。
print(im1.format) # 若图像为gif,则打印GIF,同理JPEG
mode
常见的mode 有 “L” (luminance) 表示灰度图像,“RGB”表示真彩色图像,和 “CMYK” 表示出版图像,表明图像所使用像素格式。
print(im.mode)
filename
返回源文件的文件名或路径。
print(im.filename)
size
图像大小,以像素为单位。大小以2元组(宽度,高度)给出。
width、height
图像宽度、高度,以像素为单位。int类型。
info
保存与图像相关的数据的字典。dict类型。