目录
此文所用的到的原图为
convert
作用:将图片转换为指定的模式
参数:
mode | 图片的模式,传入需要转换的模式 |
matrix | 转换矩阵。传入该参数时,应该传入由浮点数构成的元组,元组长度为4或12。matrix只支持从少数模式转换成'L'或'RGB',RGBA是不支持的 |
dither | 高频振动,用于控制颜色抖动。从模式'RGB'转换为'P'或从'RGB'或'L'转换为'1'时使用。可用的方法有'NONE'或'FLOYDSTEINBERG'(默认)。与matrix参数只能存在一个。 |
palette | 控制调色板的产生,从模式'RGB'转换为'P'时使用,可用的方法有'WEB'(默认)或'ADAPTIVE'。'ADAPTIVE'表示使用自适应的调色板。 |
colors | 当palette参数为'ADAPTIVE'时,用于控制调色板的颜色数目。默认是最大值,即256种颜色。 |
from PIL import Image
im=Image.open("image/fj.jpg")
im=im.convert('L')
im.show()
from PIL import Image
im=Image.open("image/fj.jpg")
im=im.convert('P')
im.show()
paste
将另一张图片粘在当前图片上
参数
im | 传入一张图片,当第二个参数box指定的是一个区域时,im参数也可以是一个整数或颜色值,相当于粘上一个色块板 |
box | 图片粘贴的位置或区域。传入一个长度为2或4的元组,长度为2表示被粘图片的左上角坐标,4表示区域,四个角的坐标,坐标轴的原点均为左上角为(0,0)。 |
mask | 蒙版。传入一张与被粘贴图片尺寸一样的图片,可以使用模式为'1'、'L'或者'RGBA'的图像。255,直接粘贴,0,没有粘贴,中间数,im与mask混合后粘贴。 |
from PIL import Image
im=Image.open("image/fj.jpg")
im1=Image.open("image/qq.jpg")
im.paste(im1,(30,30))
im.show()
from PIL import Image
im=Image.open("image/fj.jpg")
im1=Image.open("image/qq.jpg")
im1=im1.convert('L')
im=im.crop((0,0,300,400))
im1=im1.crop((0,0,300,400))
im.paste(im,im1)
im.show()
resize
图片的缩放
四个参数
size | 图片缩放后的尺寸,传入一个长度为2的元组 |
resample | 重采样,是一个可选的重采样过滤器可以传入Image.NEAREST, Image.BOX, Image.BILINEAR, Image.HAMMING, Image.BICUBIC, Image.LANCZOS。默认为Image.BICUBIC。如果图像的模式为'1'或'P',则始终设置为Image.NEAREST。 |
box | 缩放图片的区域。传入长度为4的元组,不可超出原图范围,否则报错 |
reducing_gap | 减少间隙。传入一个浮点数,用于优化图片缩放效果,默认不进行优化,值大于3.0时优化效果基本已经是公平的重采样。 |
from PIL import Image
im=Image.open("image/fj.jpg")
im=im.resize((200,200),box=(0,0,300,300),reducing_gap=2.0)
im.show()
写入参数时,省略resample不写时,box这个词一定要加,否则报错。
重采样过滤器
Image.BOX | 源图像的每个像素以相同的权重对目标图像的一个像素做出贡献。对于升级相当于NEAREST. 此过滤器只能与resize() 和thumbnail()方法一起使用。 |
Image.BILINEAR | 要调整大小,使用可能有助于输出值的所有像素上的线性插值计算输出像素值。对于其他转换,使用输入图像中2x2环境上的线性插值。 |
Image.HAMMING | 产生比BILINEAR 更清晰的图像,没有像BOX 那样在局部水平上的错位。此过滤器只能与resize() 和thumbnail()方法一起使用 |
Image.BICUBIC | 对于调整大小,在可能对输出值有贡献的所有像素上使用三次插值计算输出像素值。对于其他转换,使用输入图像中 4x4 环境的三次插值。 |
Image.LANCZO | 使用高质量的 Lanczos 过滤器对可能对输出值有贡献的所有像素计算输出像素值。此过滤器只能与resize() 和thumbnail()方法一起使用。 |
Image.NEAREST | 从输入图像中选取一个最近的像素。忽略所有其他输入像素。 |
from PIL import Image
im=Image.open("image/fj.jpg")
im.thumbnail((200,200),Image.BOX)
im.show()
还有一个创建缩略图,图像更易于展示和浏览,用thumbnail(size,resample)不过,有个缺点是pillow是等比缩放,因此最终尺寸不一定为指定尺寸,且尺寸不可超过原图。