一、关于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库的学习总结与成果展示的更多相关文章

  1. 一秒钟带你走进P图世界-----(python)PIL库的使用

    python-----PIL库的使用 一.什么是PIL库 1.PIL(Python Image Library)库是python语言的第三方库,具有强大的图像处理能力,不仅包含了丰富的像素.色彩操作功 ...

  2. PIL库自我学习总结及应用(美白,磨皮,搞笑图片处理)

    Hello!今天我们来学习一下这个神奇的图片处理的第三方函数库——PIL库 (本blog部分图片及代码来自网络) 这是一个支持图像存储.显示和处理的函数库,它能够处理几乎所有图像格式,可以完成对图像的 ...

  3. python之PIL库(Image模块)

    PIL(Python Image Library)是python的第三方图像处理库,PIL的功能非常的强大,几乎被认定是Python的官方图像处理库了. 由于PIL仅支持到python2.7于是一群志 ...

  4. Python之PIL库的运用、GIF处理

    一.PIL库简介 PIL(Python Image Library)库是Python语言的第三方库,它支持图像存储.显示和处理,它能够处理几乎所有图片格式,可以完成对图像的缩放.剪裁.折叠以及像图片添 ...

  5. Python之PIL库的运用、GIF处理h

    一.PIL库简介 PIL(Python Image Library)库是Python语言的第三方库,它支持图像存储.显示和处理,它能够处理几乎所有图片格式,可以完成对图像的缩放.剪裁.折叠以及像图片添 ...

  6. Python之PIL库

    Python PIL PIL (Python Image Library) 库是Python 语言的一个第三方库,PIL库支持图像存储.显示和处理,能够处理几乎所有格式的图片. 一.PIL库简介 1. ...

  7. python 协程库gevent学习--gevent数据结构及实战(三)

    gevent学习系列第三章,前面两章分析了大量常用几个函数的源码以及实现原理.这一章重点偏向实战了,按照官方给出的gevent学习指南,我将依次分析官方给出的7个数据结构.以及给出几个相应使用他们的例 ...

  8. python 利用PIL库进行更改图片大小的操作

    python 是可以利用PIL库进行更改图片大小的操作的,当然一般情况下是不需要的,但是在一些特殊的利用场合,是需要改变图片的灰度或是大小等的操作的,其实用python更改图片的大小还是蛮简单的,只需 ...

  9. PIL库的学习总结及生成GIF

    一.PIL库的概述 PIL(Python Image Library)库是Python语言的第三方库,需要通过pip工具安装. 打开cmd,输入 pip install pillow PIL库支持图像 ...

随机推荐

  1. python 2.7 学习笔记--day1--基础语句和语法

    1. 用户交互 鉴于本小节十分的基础,变不多做赘述啦! 1.1 输出第一个程序:"Hello World !" 1.2 输出字符串,重点是去除字符串中的前后的空格,使用strip( ...

  2. 删除ORACLE的步骤

    1.关闭oracle所有的服务.可以在windows的服务管理器中关闭: 2.打开注册表:regedit 打开路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlS ...

  3. input框中的size和maxlength的区别

  4. Maven3路程(五)用Maven创建Hibernate项目

    本文将用Maven3.Hibernate3.6.Oracle10g整合,作为例子. 环境清单: 1.Maven3.0.5 2.Hibernate3.6.5 Final 3.JDK1.7.0.11 4. ...

  5. 函数buf_page_get_gen

    /********************************************************************//** This is the general functi ...

  6. 金山网络2014春季Android实习生招聘-成都站-笔试第一题

    实现单例模式,并实现方法int getResult(float a),将a*8后返回. package jinshanwangluo.exam; /** * @author guoxm * @date ...

  7. 【andorid】Attribute is missing the Android namespac

    初学安卓,错误颇多 出现这个问题,是因为xml节点属性单词拼写错了,比如android我写成了adnorid,当然就错误了.

  8. JSP具体篇——out

    out对象 out对象用于在web浏览器上输出信息,而且管理应用server上的输出缓冲区.在使用out对象输出数据时.能够对数据缓冲区进行操作.及时清除缓冲区中残留的数据.为其它输出让出缓冲空间. ...

  9. php 安装redis php扩展

    下载文件 下载上面文件解压并拷贝至php的ext目录下 如果 PHP版本不对 接下来根据你所拟定的版本去如下这两个网址下载文件 1.http://windows.php.net/downloads/p ...

  10. 跨平台Redis可视化工具Web Redis Manager

    一.简介 最近因为工作需要,使用了一些单机版Redis的界面化管理工具,使用过程中那惨痛的体验真的只有用过的人才能体会:为此本人和小伙伴准备动手一个Redis可视化工具,但是因为小伙伴最近工作比较忙, ...