Python关于PIL库的学习总结与成果展示
一、关于PIL库的学习总结
PIL(Python Image Library)库是Python语言的第三方库,需要通过pip工具安装。安装PIL库的方法如下,需要注意,安装库的名字是pillow。
:\>pip install pillow #或者 pip3 install pillow
PIL库支持图像储存、显示和处理,他能够处理几乎所有图片格式,可以完成对图像的缩放、剪裁、叠加以及向图像添加线条、图像和文字等操作。
PIL库主要可以实现图像归档和图像处理两方面功能需求。
(1)图像归档:对图像进行批处理、生成图像预览、图像格式转换等。
(2)图像处理:图像基本处理、像素处理、颜色处理等。
根据功能不同,PIL库共包括21个与图片相关的类,这些类可以被看作是子库或PIL库中的模块,子库列表如下:
Image、ImageChops、ImageColor、ImageCrackCode、ImageDraw、Image Enhance、ImageFile、ImageFileIO、ImageFilter、Image Font、ImageGL、ImageGrab、Imagemath、ImageOps、ImagePalette、ImagePath、ImageQt、ImageSequence、ImageStat、ImageTk、ImageWin
下面是关于PIL库的快速参考图

二、略缩图制作
略缩图就是将一个较大的图片进行一定比例的缩小以节省储存空间而又不影响浏览。在许多网页中,为了减少用户在浏览过程中加载图片的时间,一般会将图片变成略缩图。
下面我们来看一下利用Python将图片做成略缩图的代码:
from PIL import Image
im = Image.open("Avenger.jpg")#此处为打开的图片名,注意将要操作的图片放置到与程序相同的目录下
im.thumbnail((128,128)) #此处的128,128是指略缩图的像素尺寸为128*128,可根据自身需要进行修改
im.save("Avenger.jpg","JPEG") #此处两个双引号分别表示略缩图的文件名和略缩图格式
效果如下:
原图(7680*4320)

略缩图(128*128)

三、改变图片颜色
RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。
下面我们就针对图片这三个颜色通道进行变色,代码如下:
from PIL import Image
im = Image.open("Endgame.jpg") #打开目标图片
r,g,b=im.split()
om = Image.merge("RGB",(b,g,r))#在(b,g,r)将三个字母进行交换得到效果图
om.save('Endgame.jpg') #储存文件名
效果如下
原图

变色后的图

emmmmmm...看起来怪怪的,但是效果总归是出来了。
四、将gif图逐帧分解
gif图片就像是视频一样,由一张张静态图片组成,因为各张图片之间都有一定的连续性,我们看到的gif图中人物动作没有丝毫卡顿,非常流畅,有时我们希望能捕捉到动图中的某一帧,这就需要将gif图分解了,下面我们来看看如何将一张gif图逐帧分解。
代码如下:
from PIL import Image
im = Image.open('真香.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()))#以png格式储存动图的每一帧
except:
print("处理结束") #提示程序的处理进度
效果如下
原图

效果图









由于这张动图的帧比较多,我就只发了其中几张

五、中文字符画
之前在网络上看见过利用txt文件播放一个视频,甚是新奇。今天,虽然还不能做到播放视频,但是利用字符形式查看一张图片还是可以的,下面就看看效果吧!
代码如下
from PIL import Image
ascii_char = list('"$%_&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-/+@<>i!;:,\^`.')
def get_char(r, b, g, alpha=256):
if alpha == 0:
return ' '
gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
unit = 256 / len(ascii_char)
return ascii_char[int(gray//unit)]
def main():
im = Image.open('1.jpg')
WIDTH, HEIGHT = 100, 60
im = im.resize((WIDTH, HEIGHT))
txt = ""
for i in range(HEIGHT):
for j in range(WIDTH):
txt += get_char(*im.getpixel((j, i)))
txt += '\n'
fo = open("pic_char.txt","w")
fo.write(txt)
fo.close()
main()
原图

效果图

效果还是比较好的,至少看得清楚轮廓。可能是因为我的电脑本身的问题,在txt中打开时根本无法看不出这个效果,后面我在word文档中打开,就有了上面的效果图,如果你尝试后发现也是如此,不妨试试将其复制到word文档中查看,也许效果就出来了。
六、拼接gif图
既然可以将一张gif动图逐帧分解,自然也能将gif动图逐帧拼接,话不多说,直接上代码:
import PIL.Image as Image def get_gif(pics_dir,n,t):#此处n代表拼接图片的数量,t是指各张图片之间变换的时间间隔
imgs = []
for i in range(n):
pic_name = '{}.jpg'.format(i)
temp = Image.open(pic_name)
imgs.append(temp)
save_name = '{}.gif'.format(pics_dir)
imgs[0].save(save_name, save_all=True, append_images=imgs, duration=t)
return save_name if __name__ == '__main__':
pics_dir = '路人甲'
save_name = get_gif(pics_dir,8,500)
print('制作完成。所属文件:{}'.format(save_name))
所需拼接的图片








效果图

虽然不是完全连续的,但至少看起来还是相关的(给自己找借口)
关于PIL库的学习展示就是这些啦!
Python关于PIL库的学习总结与成果展示的更多相关文章
- 一秒钟带你走进P图世界-----(python)PIL库的使用
python-----PIL库的使用 一.什么是PIL库 1.PIL(Python Image Library)库是python语言的第三方库,具有强大的图像处理能力,不仅包含了丰富的像素.色彩操作功 ...
- PIL库自我学习总结及应用(美白,磨皮,搞笑图片处理)
Hello!今天我们来学习一下这个神奇的图片处理的第三方函数库——PIL库 (本blog部分图片及代码来自网络) 这是一个支持图像存储.显示和处理的函数库,它能够处理几乎所有图像格式,可以完成对图像的 ...
- python之PIL库(Image模块)
PIL(Python Image Library)是python的第三方图像处理库,PIL的功能非常的强大,几乎被认定是Python的官方图像处理库了. 由于PIL仅支持到python2.7于是一群志 ...
- Python之PIL库的运用、GIF处理
一.PIL库简介 PIL(Python Image Library)库是Python语言的第三方库,它支持图像存储.显示和处理,它能够处理几乎所有图片格式,可以完成对图像的缩放.剪裁.折叠以及像图片添 ...
- Python之PIL库的运用、GIF处理h
一.PIL库简介 PIL(Python Image Library)库是Python语言的第三方库,它支持图像存储.显示和处理,它能够处理几乎所有图片格式,可以完成对图像的缩放.剪裁.折叠以及像图片添 ...
- Python之PIL库
Python PIL PIL (Python Image Library) 库是Python 语言的一个第三方库,PIL库支持图像存储.显示和处理,能够处理几乎所有格式的图片. 一.PIL库简介 1. ...
- python 协程库gevent学习--gevent数据结构及实战(三)
gevent学习系列第三章,前面两章分析了大量常用几个函数的源码以及实现原理.这一章重点偏向实战了,按照官方给出的gevent学习指南,我将依次分析官方给出的7个数据结构.以及给出几个相应使用他们的例 ...
- python 利用PIL库进行更改图片大小的操作
python 是可以利用PIL库进行更改图片大小的操作的,当然一般情况下是不需要的,但是在一些特殊的利用场合,是需要改变图片的灰度或是大小等的操作的,其实用python更改图片的大小还是蛮简单的,只需 ...
- PIL库的学习总结及生成GIF
一.PIL库的概述 PIL(Python Image Library)库是Python语言的第三方库,需要通过pip工具安装. 打开cmd,输入 pip install pillow PIL库支持图像 ...
随机推荐
- win 下 nginx 与 php的配置
1.下载需要的软件包 php的windows版本(*注意这里下载非线程安全的,nginx使用的是cgi) http://windows.php.net/download/ nginx的window ...
- mockito使用
mockito学习资料: http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html http://blog.csdn.net/sdy ...
- jquery正则判断字符串有几个逗号
var angelweb="我,你,ta,";var re=/[,,]/g;if(re.test(angelweb)){ var n=angelweb.match(re).leng ...
- maven的pom.xml样例
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- laravel表单提交
1.控制器->路由->视图 2.视图 3.控制器
- Json和XML解析
NSXMLParse 关于XML,有两种解析方式,分别是SAX(Simple API for XML,基于事件驱动的解析方式,逐行解析数据,采用协议回调机制)和DOM(Document Object ...
- python数据类型4
一浮点数 什么叫做浮点数:浮点数就相当于小数,但是浮点数不包括无限循环又不重复的小数. 小数分为 有限小数和无限小数 无限小数又分为 无限循环小数和无限不循环小数 而 浮点数就是有限小数和无限循环小数 ...
- 2018.10.15 NOIP训练 百事世界杯之旅(期望dp)
传送门 期望题. 其实跟dpdpdp关系并不大. 考虑f[i]f[i]f[i]表示已经凑出了iii个需要的次数. 显然有:f[i]=ni∗f[i]+nn−i∗f[i+1]+1f[i]=\frac {n ...
- CentOS里vim基本操作
1.关于退出 :wq! ----强制保存退出 :wq ---- 保存退出 :x ----- 作用和:wq 一样 ZZ ---- 作用和:wq一样,(注意Z是大写的,并且不是在命令模式) :q ...
- 右值引用和std::move函数(c++11)
1.对象移动 1)C++11新标准中的一个最主要的特性就是移动而非拷贝对象的能力 2)优势: 在某些情况下,从旧内存拷贝到新内存是不必要的,此时对对象进行移动而非拷贝可以提升性能 有些类如IO类或un ...