PIL库image模块的各方法

学习自官方文档

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.NEARESTPIL.Image.BOXPIL.Image.BILINEARPIL.Image.HAMMING, PIL.Image.BICUBICPIL.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类型。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值