美白、磨皮、搞笑图片处理以及GIF的分解
Image模块
一、open
函数:Image.open(file)
Image.open(file,mode)
如果变量mode被设置,那必须是“r”,用户可以使用一个字符串(表示文件名称的字符串)或者文件对象作为变量file的值。文件对象必须实现read(),seek()和tell()方法,并且以二进制模式打开。

二、new
函数:Image.new(mode,size)
Image.new(mode,size,color)
new方法用于使用给定的变量mode(模式)和size(尺寸)生成新的图像。
1)关于mode:'RGB'是指的RGB彩色图像,‘L’是指的灰度图像。
2)关于color:对于单通道图像,变量color只给定一个值;对于多通道图像,变量color给定一个元组(每个通道对应一个值)。用户也可以用颜色的名称,比如给变量color赋值为“red”。如果没有对变量color赋值,图像内容将会被全部赋值为0(图像即为黑色)。如果变量color是空,图像将不会被初始化,即图像的内容全为0。
效果图 效果图




三、save
Image.save(filename,format)
将图像保存为filename文件名,format是图片格式。
四、format\mode\size\palette
| 函数 |
描述 |
| Image.format | 标识图像格式或来源,如果图像不是从文件读取,值是None |
| Image.mode | 图像的色彩模式,"L"灰度图像、“RGB”真彩色图像和"CMYK"出版图像 |
| Image.size | 图像宽度和高度,单位是像素(px),返回值是二元元组(tuple) |
| Image.palette | 颜色调色板表格。如果图像的模式是“P”,则返回ImagePalette类型,否则,将为None |
补充(常见modes描述)
| modes | 描述 |
| 1 | 1位像素,黑和白,存成8位的像素 |
| L | 8位像素,黑白 |
| P | 8位像素,使用调色板映射到任何其他模式 |
| RGB | 3 *8位像素,真彩 |
| RGBA | 4*8位像素,真彩+透明通道 |
| CMYK | 4*8位像素,颜色隔离 |
| YCbCr | 3*8位像素,彩色视频格式 |
| I | 32位整型像素 |
| F | 32位浮点型像素 |

四、convert
函数:Image.convert(mode)
返回图像转换后的副本
在PIL中,从模式“RGB”转换为“L”模式是按照下面的公式转换的:
L = R * 0.299 + G * 0.587+ B * 0.114
下面我主要尝试了9中mode类中的1和L:
原图 
模式‘1’为二值图像

模式L为灰色图像
五、split
函数:Image.split()
返回当前图像各个通道组成的一个元组。例如,分离一个“RGB”图像将产生三个新的图像,分别对应原始图像的每个通道(红,绿,蓝)。
result~
六、merge
函数:Image.merge(mode,bands)
合并类使用一些单通道图像,创建一个新的图像。变量bands为一个图像的元组或者列表,每个通道的模式由变量mode描述。所有通道必须有相同的尺寸。


原图1 原图2 效果图
七、blend
函数:Image.blend(image1,image2,alpha)
效果图
| 函数 | 描述 |
| Image.resize(size) | 按size大小调整图像,生成副本 |
| Image.rotate(angle) | 按angle角度旋转角度,生成副本 |
| Image.thumbnail(size) | 创建图像的略缩图,size是缩略图尺寸的二元组 |
| 函数 | 描述 |
| ImageFilter.BLUR | 图像的模糊效果 |
| ImageFilter.CONTOUR | 图像的轮廓效果 |
| ImageFilter.DERAIL | 图像的细节效果 |
| ImageFilter.EDGE_ENHANCE | 图像的边界加强效果 |
| ImageFilter.EDGE_ENHANCE_MORE | 图像的或值边界加强效果 |
| ImageFilter.EMBOSS | 图像的浮雕效果 |
| ImageFilter.FIND_EDGES | 图像的边界效果 |
| ImageFilter.SMOOTH | 图像的平滑效果 |
| ImageFilter.SMOOTH_MORE | 图像的或值平滑效果 |
| ImageFilter.SHARPEN | 图像的锐化效果 |



原图 (轮廓) 效果图


原图 (浮雕)效果图
十、GIF图像提取处理
| 函数 | 描述 |
| im.seek() | 在给定的文件序列中查找指定的帧 |
| im.tell() | 返回当前帧所处位置 |
这是原图~

result~
十一、图片的过滤和增强
ImageEnhance类提供了更高级的图像增强需求,他提供调整色彩度、亮度、对比度、锐化等功能。
| 函数 | 描述 |
| ImageEnhance.enhance(factor) | 对选择属性的数值增强factor倍 |
| ImageEnhance.Color(im) | 调整图像的颜色平衡 |
| ImageEnhance.Contrast(im) | 调整图像的对比度 |
| ImageEnhance.Brightness(im) | 调整图像的亮度 |
| ImageEnhance.Sharpness(im) |
调整图像的锐度 |

(增强亮度效果)
(增强对比效果)
(增强亮度效果)

浙公网安备 33010602011771号