一、关于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. linux下静默安装 weblogic12.2.1.3中间件

    第一步:准备需要的安装包文件,这里注意 weblogic12.2.*需要的最低JDK版本为1.8以上 1.查看当前的镜像列表:docker images 2.运行镜像,并进入容器,这里运行基本的cen ...

  2. Struts2的拦截器技术

    1. 拦截器的概述 * 拦截器就是AOP(Aspect-Oriented Programming,面向切面)的一种实现.(AOP是指用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作 ...

  3. Golang之(if)流程控制

    (if)我能坚持做好一只地鼠,慢慢的刨坑,讲洞挖的深一点…… package main import ( "fmt" ) func testIf1() { num := //var ...

  4. nzhtl1477-ただいま帰りました ( bfs )

    nzhtl1477-ただいま帰りました 题目描述 珂学题意: 你是威廉!你要做黄油蛋糕给珂朵莉吃~! 68号岛有n个商店,有的商店直接有小路连接,小路的长度都为1 格里克告诉了你哪些地方可能有做黄油蛋 ...

  5. 修改socket缓冲区大小

    #include <stdio.h>#include <sys/time.h>#include <sys/types.h>#include <sys/sock ...

  6. UI设计不就是画线框,凭什么年薪30W?

    作为一枚界面设计师 我真的很想为UI设计抱不平啊!! UI设计真是一个备受不解的职业 常会被误解,然后出现以下场景 程序欧巴: 界面画好没?按钮圆的方的不都能用吗?纠结那多干嘛? 产品经理: 这次我们 ...

  7. laravel的foreach

    1.控制器 2.模板

  8. android的 Base64

    byte[] key=Base64.decode("YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4".getBytes(), Base64.DEFAULT);   ...

  9. Jsp的语法和指令

    Jsp的三种注释 前端语言注释:<!-- --> 会被转译,也会被发送,但是不会被浏览器执行 java语言注释: 会被转译,但是不会被servlet执行 Jsp注释:<%--  -- ...

  10. ubuntu16.4中开启vncserver进行远程桌面

    使用x11vnc作为vncserver端 1 安装x11vnc $ sudo apt-get update $ sudo apt-get install x11vnc 2 生成密码 $ x11vnc ...