文章目录
- 前言
- 🍒PIL库概述
- 🍓Image类解析
- 💚图像的创建
- 💙图像的属性
- 💜图像的转换
- 💗图像处理
- 总结
提示:以下是本篇文章正文内容
🍒PIL库概述PIL库支持图像存储、 显示和处理, 它能够处理几乎所有图片格式, 可以完成 对图像的缩放、 剪裁、 叠加以及向图像添加线条、 图像和文字等操作
PIL库可以完成图像归档和图像处理两方面功能需求: (1)图像归档:对图像进行批处理、 生成图像预览、 图像格式转换等
(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\2049675.jpg")
im.show() // 显示
基本上如下图
from PIL import Image
im = Image.open(r"E:\Pycharm\Project\pictures\2049675.jpg")
im.show()
print(im.format,im.size)
# 结果
# JPEG (1920, 1080)
💜图像的转换
方法描述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\2049675.jpg")
print(im)
im.save(r"E:\Pycharm\Project\pictures\2049675changed.png")
im = Image.open(r"E:\Pycharm\Project\pictures\2049675changed.png")
print(im)
im.show()
# 结果
GIF文件图像提取。 对一个GIF格式动态文件, 提取其中各帧图像, 并保存为文件
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\2050074.jpg")
print(im)
im.thumbnail((128, 99))
im.save("mm","JPEG")
print(im)
im.show()
# 结果
1.Image类可以缩放和旋转图像, 其中, rotate()方法以逆时针旋转的角度值作 为参数来旋转图像。
方法描述Image.resize(size)按size大小调整图像, 生成副本Image.rotate(angle)按angle角度旋转图像, 生成副本2.Image类能够对每个像素点或者一幅RGB图像的每个通道单独进行操作,split() 方法能够将RGB图像各颜色通道提取出来, merge()方法能够将各独立通道再合成一幅新的图像。
方法描述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图像的颜色交换 交换图像中的颜色, 可以通过分离RGB图片的三个颜色通道实现颜色交换
from PIL import Image
im = Image.open(r"E:\Pycharm\Project\pictures\2050536.jpg") #打开文件
r, g, b = im.split() #获得RGB通道数据
newg = g.point(lambda i: i * 0.9) # 将G通道颜色值变为原来的0.9倍
newb = b.point(lambda i: i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?