首页后端开发Pythonpython的pil库功能是什么,怎样使用?

python的pil库功能是什么,怎样使用?

时间2024-03-23 13:46:03发布访客分类Python浏览1601
导读:这篇文章给大家分享的是python的pil库的相关内容,下文将介绍python的pil库的功能和用法,文中示例操作介绍的非常详细,对大家学习pil库的使用有一定的帮助,那么感兴趣的朋友接下来一起跟随小编了解看看吧。 PIL库概述 PIL库...

这篇文章给大家分享的是python的pil库的相关内容,下文将介绍python的pil库的功能和用法,文中示例操作介绍的非常详细,对大家学习pil库的使用有一定的帮助,那么感兴趣的朋友接下来一起跟随小编了解看看吧。

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() // 显示

基本上如下图

图像的属性

属性 描述
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\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()

# 结果
PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=1920x1080 at 0x1A8DE865F40>
PIL.PngImagePlugin.PngImageFile image mode=RGB size=1920x1080 at 0x1A8DE8D2E80>

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()

# 结果
PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=2757x2135 at 0x238DFCD5DC0>
PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=128x99 at 0x238DFCD5DC0>

图像处理

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  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\2050558.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库的介绍,现在大家对pil库的功能和作用这应该都有所了解了吧,希望本文对大家学习pil库的使用有帮助,想要了解更多python的pil库的内容,可以继续浏览网络其他相关的文章。

文本转载自脚本之家

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: python的pil库功能是什么,怎样使用?
本文地址: https://pptw.com/jishu/651378.html
Oracle中去除空格函数有几种,不同在哪 在Oracle中如何声明临时变量,使用要注意哪些

游客 回复需填写必要信息