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库支持图像 ...
随机推荐
- MongoDB安装(一)
详细图解,记录 win7 64 安装mongo数据库的过程.安装的版本是 MongoDB-win32-x86_64-2008plus-ssl-3.4.1-signed. 示例版本:mongodb-wi ...
- 生成静态页html
代码: using System; using System.Collections; using System.Collections.Generic; using System.IO; using ...
- 将html转换成image图片png格式
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics ...
- 什么是RNA-Seq (RNA Sequencing)
什么是RNA-Seq (RNA Sequencing) 2011-07-14 ~ ADMIN 随着ome为词尾的各种组学的出现,转录组学已经成为了人们了解生物信息的一个重要组成部分.人们使用了许多办法 ...
- tp5链接访问
方法名:admin/DayActive/statistic 访问:admin/day_active/statistic
- socket多文件发送(压缩,解压)
.客户端代码 public static void FileMoveInVirtualMachineForCompressor() { var obj = new object(); string i ...
- 设计模式之java源码-工厂方法模式
工厂方法模式 8.1 女娲造人的故事 东汉<风俗通>记录了一则神话故事:“开天辟辟,未有人民,女娲搏,黄土作人……”,讲述的内容就是大家非常熟悉的女娲造人的故事.开天辟地之初,大地上并没有 ...
- JavaScript的replace方法与正则表达式结合应用讲解
大家好!!今晚在华软G43*宿舍没什么事做,把javascript中replace方法讲解一下,如果讲得不对或不合理是情理之中的事,因为我不是老鸟,也不是菜鸟,我也不知道我当底是什么鸟??呵~~ re ...
- 《Just for Fun》---读后感
<Just for Fun>本书是Linux之父林纳斯自传,书名的意思是:只是为了好玩.主要是讲了林纳斯的人生经历,以及Linux的诞生过程.Linux从一个终端仿真器到一个世界瞩目的操作 ...
- 2018.10.15 loj#6010. 「网络流 24 题」数字梯形(费用流)
传送门 费用流经典题. 按照题目要求建边. 为了方便我将所有格子拆点,三种情况下容量分别为111,infinfinf,infinfinf,费用都为validi,jval_{id_{i,j}}valid ...