首页 > Python基础教程 >
-
美白,磨皮,搞笑图片处理
一、PIL库概述
PIL库支持图像存储、显示和处理,它能够处理几乎所有图片格式,可以完成对图像的缩放、剪裁、叠加以及向图像添加线条、图像和文字等操作。
1、功能:
(1)图像归档:对图像进行批处理、生成图像预览、图像格式转换等;
(2)图像处理:图像基本处理、像素处理、颜色处理等。
2、分类:
Ⅰ、Image类:from PIL import Image
(1)图像读取和创建方法
方法 | 描述 |
Image.open(filename) |
根据参数加载图像文件 |
Image.new(mode, size, color) |
根据给定参数创建一个新的图像 |
Image.open(StringIO.StringIO(buffer)) |
从字符串中获取图像 |
例:
1
2
|
from PIL import Image im = Image. open ( "D:\\我爱学习\\python3\\photos\\image1.jpg" ) |
(2)处理图片常用属性:
方法 | 描述 |
Image.format |
标识图像格式或来源,如果图像不是从文件读取,值是None |
Image.mode |
图像的色彩模式,"L"灰度图像、"RGB"真彩色图像、"CMYK"出版图像 |
Image.size |
图像宽度和高度,单位是像素(px),返回值是二元元组(tuple) |
Image.palette |
调色板属性,返回一个ImagePalette类型 |
(3)图像转换和保存方法:
方法 | 描述 |
Image.save(filename,format) | 将图像保存为filename文件名,format是文件格式 |
Image.convert(mode) | 使用不同的参数,转换图像为新的模式 |
Image.thumbnail(size) | 创建图像的缩略图,size是缩略尺寸的二元元组 |
例:
1
2
3
4
|
from PIL import Image im = Image. open ( "D:\\我爱学习\\python3\\photos\\image1.jpg" ) im.thumbnail(( 128 , 128 )) im.save( "D:\\我爱学习\\python3\\photos\\imagechange1.jpg" ) |
效果对比图如下:
(4)像素点和RGB:
方法 | 描述 |
Image.point(func) |
根据函数func功能对每个元素进行运算,返回图像副本 |
Image.split() | 提取RGB图像的每个颜色通道,返回图像副本 |
Image.merge(mode,bands) | 合并通道 ,采用mode色彩,bands是新色的色彩通道 |
Image.blend(im1,im2,alpha) |
将两幅图片im1和im2按照如下公式插值后生成新的图像: im1 * (1.0-alpha) + im2 * alpha |
例:
1
2
3
4
5
|
from PIL import Image im = Image. open ( "D:\\我爱学习\\python3\\photos\\image1.jpg" ) r,g,b = im.split() om = Image.merge( "RGB" ,(b,g,r)) om.save( "D:\\我爱学习\\python3\\photos\\imagechange2.jpg" ) |
效果对比如下:
Ⅱ、ImageFilter类:from PIL import ImageFilter
方法 | 描述 |
ImageFilter.BLUR |
图像的模糊效果 |
ImageFilter.CONTOUR |
图像的轮廓效果 |
ImageFilter.DETAIL |
图像的细节效果 |
ImageFilter.EMBOSS |
图像的浮雕效果 |
ImageFilter.SMOOTH |
图像的平滑效果 |
ImageFilter.SHARPEN |
图像的锐化效果 |
Ⅲ、ImageEnhance类:from PIL import ImageEnhance
方法 | 描述 |
ImageEnhance.enhance(factor) |
对选择属性的数值增强factor倍 |
ImageEnhance.Color(im) |
调整图像的颜色平衡 |
ImageEnhance.Contrast(im) |
调整图像的对比度 |
ImageEnhance.Brightness(im) |
调整图像的亮度 |
ImageEnhance.Sharpness(im) |
调整图像的锐度 |
Ⅳ、图像字符画绘制:位图图片是由不同颜色像素点组成的规则分布,如果采用字符串代替像素,图像就成为了字符画。
二、实例展现
1、以下图为例,进行缩略,变色,提取轮廓和浮雕:
(原图 image6.jpg)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
from PIL import Image from PIL import ImageFilter im = Image. open ( "D:\\我爱学习\\python3\\photos\\image6.jpg" ) r,g,b = im.split() #变色 newr = b.point( lambda i: i * 0.7 ) bm = Image.merge( "RGB" ,(b,g,r)) bm.save( "D:\\我爱学习\\python3\\photos\\imageaa2.jpg" ) cm = im. filter (ImageFilter.CONTOUR) #轮廓 cm.save( "D:\\我爱学习\\python3\\photos\\imageaa3.jpg" ) dm = im. filter (ImageFilter.EMBOSS) #浮雕 dm.save( "D:\\我爱学习\\python3\\photos\\imageaa4.jpg" ) im.thumbnail(( 120 , 120 )) #缩略 im.save( "D:\\我爱学习\\python3\\photos\\imageaa1.jpg" ) |