目录
- 前言
- 🍒PIL库概述
- 🍓Image类解析
- 💚图像的创建
- 💙图像的属性
- 💜图像的转换
- 💗图像处理
- 总结
前言
提示:以下是本篇文章正文内容
🍒PIL库概述
(2)图像处理:图像基本处理、 像素处理、 颜色处理等
🍓Image类解析
💚图像的创建
在PIL中, 任何一个图像文件都可以用Image对象表示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(r"E:\Pycharm\Project\pictures\.jpg") im.show() // 显示
基本上如下图
💙图像的属性
属性 | 描述 |
---|---|
Image.format | 标识图像格式或来源, 如果图像不是从文件读取, 值是None |
Image.mode | 图像的色彩模式, "L"灰度图像、 "RGB"真彩色图像、 "CMYK"出版图像 |
Image.format | 标识图像格式或来源, 如果图像不是从文件读取, 值是None |
Image.size | 图像宽度和高度, 单位是像素(px) , 返回值是二元元组(tuple) |
Image.palette | 调色板属性, 返回一个ImagePalette类型 |
from PIL import Image im = Image.open(r"E:\Pycharm\Project\pictures\.jpg") im.show() print(im.format,im.size)
💜图像的转换
方法 | 描述 |
---|---|
Image.save(filename, format) | 将图像保存为filename文件名, format是图片格式 |
Image.convert(mode) | 使用不同的参数, 转换图像为新的模式 |
Image.thumbnail(size) | 创建图像的缩略图, size是缩略图尺寸的二元元组 |
jpg 转换成png
from PIL import Image im = Image.open(r"E:\Pycharm\Project\pictures\.jpg") print(im) im.save(r"E:\Pycharm\Project\pictures\changed.png") im = Image.open(r"E:\Pycharm\Project\pictures\changed.png") print(im) im.show()
# 结果
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=1920x1080 at 0x1A8DE865F40>
<PIL.PngImagePlugin.PngImageFile image mode=RGB size=1920x1080 at 0x1A8DE8D2E80>
from PIL import Image im = Image.open(r"E:\Pycharm\Project\pictures\21.gif") # 读入一个GIF文件 try: im.save('picframe{:02d}.png'.format(im.tell())) while True: im.seek(im.tell()+1) # 帧的位置 im.save('picframe{:02d}.png'.format(im.tell())) except: print("处理结束")
结果
tell()方法:返回当前帧所处位置,从0开始计算
缩略图
from PIL import Image im = Image.open(r"E:\Pycharm\Project\pictures\.jpg") print(im) im.thumbnail((128, 99)) im.save("mm","JPEG") print(im) im.show()
# 结果
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=2757x2135 at 0x238DFCD5DC0>
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=128x99 at 0x238DFCD5DC0>
💗图像处理
方法 | 描述 |
---|---|
Image.resize(size) | 按size大小调整图像, 生成副本 |
Image.rotate(angle) | 按angle角度旋转图像, 生成副本 |
方法 | 描述 |
---|---|
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 |
from PIL import Image im = Image.open(r"E:\Pycharm\Project\pictures\.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(r"E:\Pycharm\Project\pictures\aa.jpg") #输出图片 om.show()
原图:
交换后
3.图像的过滤和增强
PIL库的ImageFilter类和ImageEnhance类提供了过滤图像和增强图像的方法, 共10种
方法表示 | 描述 |
---|---|
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 | 图像的锐化效果 |
轮廓效果
from PIL import Image from PIL import ImageFilter im = Image.open(r"E:\Pycharm\Project\pictures\.jpg") om = im.filter(ImageFilter.CONTOUR) om.save('abc.jpg') om.show()
原图:
修改后:
4.ImageEnhance类提供了更高级的图像增强需求, 它提供调整色彩度、 亮度、 对比度、 锐化等功能
方法 | 描述 |
---|---|
ImageEnhance.enhance(factor) | 对选择属性的数值增强factor倍 |
ImageEnhance.Color(im) | 调整图像的颜色平衡 |
ImageEnhance.Contrast(im) | 调整图像的对比度 |
ImageEnhance.Brightness(im) | 调整图像的亮度 |
ImageEnhance.Sharpness(im) | 调整图像的锐度 |
总结
提示:这里对文章进行总结:
到此这篇关于Python 图像处理之PIL库详解用法的文章就介绍到这了,更多相关Python 图像处理内容请搜索本网站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本网站!
您可能感兴趣的文章:
- python图片处理库Pillow实现简单PS功能
- Python图像处理库PIL详细使用说明
- python之pil的使用详解
- python中的opencv和PIL(pillow)转化操作
- Python Pillow(PIL)库的用法详解
- 使用Python PIL库读取文件批量处理图片大小实现