PIL库学习总结与运用PIL库对图片美白锐化的处理
Python Imaging Library,简称PIL
python图像处理库,这个库支持多种文件格式,并提供了强大的图像处理和图形处理能力。
下面是我的学习笔记
一、PIL库Image类解析
(1)Image图片读取和创建方法
方法 |
描述 |
Image.open(filename) |
根据参数加载图像文件 |
Image.new(mode, size, color) |
根据给定参数创建一个新的图像 |
Image.open(StringIO.StringIO(buffer)) |
从字符串中获取图像 |
Image.frombytes(mode, size, data) |
根据像素点data创建图像 |
Image.verify() |
对图像文件完整性进行检查,返回异常 |
例如要加载一个图片
from PIL import Image im = Image.open("D:\\pycodes\\birdnest.jpg")
(2)Image类4个处理图片的常用属性
属性 |
描述 |
Image.format |
标识图像格式或来源,如果图像不是从文件读取,值是None |
Image.mode |
图像的色彩模式,"L"灰度图像、"RGB"真彩色图像、"CMYK"出版图像 |
Image.size |
图像宽度和高度,单位是像素(px),返回值是二元元组(tuple) |
Image.palette |
调色板属性,返回一个ImagePalette类型 |
(3)Image类的图像保存和处理
方法 |
描述 |
Image.save(filename, format) |
将图像保存为filename文件名,format是图片格式 |
Image.convert(mode) |
使用不同的参数,转换图像为新的模式 |
Image.thumbnail(size) |
创建图像的缩略图,size是缩略图尺寸的二元元组 |
(4)图像的过滤和增强
方法表示 |
描述 |
ImageFilter.BLUR |
图像的模糊效果 |
ImageFilter.CONTOUR |
图像的轮廓效果 |
ImageFilter.DETAIL |
图像的细节效果 |
ImageFilter.EDGE_ENHANCE |
图像的边界加强效果 |
ImageFilter.EDGE_ENHANCE_MORE |
图像的阈值边界加强效果 |
ImageFilter.EMBOSS |
图像的浮雕效果 |
ImageFilter.FIND_EDGES |
图像的边界效果 |
ImageFilter.SMOOTH |
图像的平滑效果 |
ImageFilter.SMOOTH_MORE |
图像的阈值平滑效果 |
ImageFilter.SHARPEN |
图像的锐化效果 |
二、PIL库的运用(#图片均来自百度搜索)
(1)对图片生成略缩图
from PIL import Image im = Image.open("D:\\pic.jpg") im.thumbnail((128, 128)) im.save("D:\\picS.jpg","JPEG")
对比图:
(2)改变图片颜色
im = Image.open('D:\\pic.jpg') #打开文件 r, g, b = im.split() #获得RGB通道数据 newg = g.point(lambda i: i * 0.9) # 将G通道颜色值变为原来的0.9倍 newb = b.point(lambda i: i < 100) # 选择B通道值低于100的像素点 om = Image.merge(im.mode, (r, newg, newb)) # 将3个通道合形成新图像 om.save('D:\\picA.jpg') #输出图片
对比图:
(
(3)改变图片轮廓
from PIL import Image from PIL import ImageFilter im = Image.open("D:\\gsd.jpg") om = im.filter(ImageFilter.CONTOUR) om.save("D:\\GSD.jpg")
对比图:
(4)图片的浮雕操作
from PIL import Image from PIL import ImageFilter im = Image.open("D:\\gsd.jpg") om = im.filter(ImageFilter.EMBOSS) om.save("D:\\GSD1.jpg")
对比图:
(5)GIF图像的每一帧提取
from PIL import Image im = Image.open('D:\\n.gif') # 读入一个GIF文件 try: im.save('D:\\nn{:02d}.png'.format(im.tell())) while True: im.seek(im.tell()+1) im.save('D:\\nn{:02d}.png'.format(im.tell())) except: print("处理结束")
三、图片的对比度增强,锐化,美白
(1)图片的对比度增强
from PIL import Image from PIL import ImageEnhance im = Image.open('D:\\c.jpg') om = ImageEnhance.Contrast(im) om.enhance(3).save('D:\\cc.jpg')
(2)图像的锐化
from PIL import Image from PIL import ImageEnhance im = Image.open('D:\\n.jpg') om = ImageEnhance.Sharpness(im)
om.enhance(5).save('D:\\nn.jpg')
(3)图像的美白
from PIL import Image from PIL import ImageEnhance im = Image.open('D:\\c.jpg') om = ImageEnhance.Brightness(im) om.enhance(1.4).save('D:\\ccc.jpg')