Hello!今天我们来学习一下这个神奇的图片处理的第三方函数库——PIL库

(本blog部分图片及代码来自网络)

这是一个支持图像存储、显示和处理的函数库,它能够处理几乎所有图像格式,可以完成对图像的缩放、裁剪、叠加以及图像添加条纹,文字等信息等的操作。

首先是利用pip下载一个:

它有许多子库,例如:Image、ImageChops、ImageDraw等等,他们各有神通,发挥着自己的作用,

首先我们当然学习的是经典的Image子库;

方法 描述
Image.open(filename) 根据参数加载图像文件
Image.new(mode,size,color) 根据给定参数创建一个新的图像
Image.open(StringIO.StringIO(buffer)) 从字符串中获取图像
Image.frombytes(mode,size,data) 根据像素点data创建图像
Image.verify() 对图像文件完整性进行检查,返回异常

参考:http://pillow-cn.readthedocs.io/zh_CN/latest/reference/index.html

首先对于使用的工具:基于WIN10,Python3.7.2,Pillow5.4.1

对于Image模块

首先我认识到一个简单的例子:读取下载好的图片并将它可视化(代码如下):

from PIL import Image
im = Image.open('test1.jpg') # 读取图片
im.show() # 可视化

 这里的“test.jpg”是我刚刚下载好的来自网络的图片放置在桌面上;

然后运行!

通过使用相关的图片查看器,我们就可以打开自己桌面上图片进行可视化了,我们甚至还可以用其他代码对图片进行调整:

from PIL import Image
im = Image.open('test1.jpg') # 读取图片
im.rotate(45).show() # 将图片旋转,并用系统自带的图片工具显示图片

诺!对比上图,我们的图片被旋转了45度,这些只是比较基本的操作,我们依然可以对图片进行更加多的改变!

图像灰度化处理

这是一张彩色的建筑图,我觉得太鲜艳了,又比较喜欢一种黑白色调显得低调深沉就像我一样,那么我可以使用下面的代码:

from PIL import Image
img = Image.open("test3.jpg")
# 灰度化:将RGB/RGBA -> L
img = img.convert("L")
img.show()

效果如下:

不得不说,很耐斯!

还有很多效果滴:

在Image.filter(filter)中:

# BLUR - 模糊处理
# CONTOUR - 轮廓处理
# DETAIL - 增强
# EDGE_ENHANCE - 将图像的边缘描绘得更清楚
# EDGE_ENHANCE_NORE - 程度比EDGE_ENHANCE更强
# EMBOSS - 产生浮雕效果
# SMOOTH - 效果与EDGE_ENHANCE相反,将轮廓柔和
# SMOOTH_MORE - 更柔和
# SHARPEN - 效果有点像DETAIL
再对“test3.jpg”进行处理:

from PIL import Image
from PIL import ImageFilter
testimg = Image.open("test3.jpg")
testimg.show()
filterimg = testimg.filter(ImageFilter.EMBOSS)
filterimg.show()

(浮雕效果)

(轮廓效果)

…………还有很多…………

and各种处理方案:

Image.getbands()

Image.geebbox()

Image.getcolors(maxcolor=256)

Image.getdata(band=None)(一般和list()结合使用)

Image.getextrema()

Image.getpixel((x,y))

Image.histogram(mask=None,extrema=None)
接下来是缩略图的学习,我们有时候为了节约储存空间,会将原来的图片进行压缩,通过等比例压缩之后会变成缩略图,那么如何用Image库来实现呢??

话不多说,先上代码!

from PIL import Image
im = Image.open('test3.jpg')
size = im.size
if size[0] > size[1]:rate = float(200) / float(size[0])
else:rate = float(128) / float(size[1])
new_size = (int(size[0] * rate), int(size[1] * rate))
new = im.resize(new_size, Image.BILINEAR)
new.save('n.jpg')
im.show('n.jpg')

想知道这是什么神仙代码吗?

看得出我还是使用了“test3.jpg”这张图,我想要将它压缩并另存为一个压缩后的图片存到桌面上,然后打开看看效果如何;

很明显桌面上多了一个新图片,这就是另存的压缩图了;

查看效果如上,这个图片显然比原图小了很多,拉近了看还是十分模糊的呢,这就是等比例缩小后的缩略图“n.jpg”啦~

接下来就是自制“美颜相机”啦~

我们的生活现在离不开手机,手机又刚好有自拍功能,这满足了我们没事“卡擦卡擦”拍照看看自己的盛世美颜的需求,但是也不是每一次拍照都能很好地满足我们的虚荣心和好胜的心理,毕竟……我们对自己可是很严格的!!!特别是颜值!!!

所以才会催生出各种P图软件,那么我们自己可不可以做呢??

当然~

代码呢?来人!上代码!!

from PIL import Image
from PIL import ImageEnhance
import cv2
import numpy as np# image = Image.open('test4.jpg')
#image.show()
def BrightnessEnhancement(brightness):image = Image.open('test4.jpg')enh_bri = ImageEnhance.Brightness(image)
#    brightness =1.5image_brightened = enh_bri.enhance(brightness)image_brightened.show()def ContrastEnhancement(contrast):image = Image.open('test4.jpg')enh_con = ImageEnhance.Contrast(image)
#    contrast =1.5image_contrasted = enh_con.enhance(contrast)image_contrasted.show()def ColorEnhancement(color): image = Image.open('test4.jpg')enh_col = ImageEnhance.Color(image)
#    color =0.8image_colored = enh_col.enhance(color)image_colored.show()def SharpnessEnhancement(sharpness):image = Image.open('test4.jpg')enh_sha = ImageEnhance.Sharpness(image)
#    sharpness = 2image_sharped = enh_sha.enhance(sharpness)image_sharped.show()def Filter(image):image =cv2.imread('test4.jpg')Remove=cv2.bilateralFilter(image,0,0,10)cv2.imshow('filter',Remove)cv2.waitKey(0)cv2.destroyAllWindows()
#    res = np.uint8(np.clip((1.2 * image + 10), 0, 255))
#    tmp = np.hstack((dst, res))
#    cv2.imshow('bai',res)def WhiteBeauty(image,whi):image =cv2.imread('test4.jpg')white = np.uint8(np.clip((whi * image + 50), 0, 255))cv2.imshow('bai',white)cv2.waitKey(0)cv2.destroyAllWindows()if __name__ =="__main__":filepath = 'test4.jpg'#原始图像brightness = 1.5contrast = 0.2color=1.9sharpness=0.1BrightnessEnhancement(brightness)ContrastEnhancement(contrast)ColorEnhancement(color)SharpnessEnhancement(sharpness)whi = 1.2image =cv2.imread('test4.jpg')Filter(image)WhiteBeauty(image,whi)

这是原图:

 

这是美白后的:

 

灰度处理:

以及等等……(受限于篇幅不一一列举)

对一个GIF每一帧进行提取:

from PIL import Image
im = Image.open('gif2.gif')      # 读入一个GIF文件
try:im.save('aa{:02d}.png'.format(im.tell()))while True:im.seek(im.tell()+1)im.save('new{:02d}.png'.format(im.tell()))
except:print("处理结束")

 结果:

接下来就是激动人心的时刻了!我们要做动图!!

首先要下载一个第三方库——imageio

然后就可以上代码了:

import imageiodef create_gif(image_list, gif_name):frames = []for image_name in image_list:frames.append(imageio.imread(image_name))# Save them as frames into a gif imageio.mimsave(gif_name, frames, 'GIF', duration = 1)returndef main():image_list = ['t1.png','t2.png','t3.png','t4.png']gif_name = 'finallgif.gif'create_gif(image_list, gif_name)if __name__ == "__main__":main()

效果:

由于有些分辨率的不统一所以会有黄边,不要在意呀~

转载于:https://www.cnblogs.com/iconangle/p/10683223.html

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

  1. 磨皮美白搞笑图片处理

    v(1)PIL库自我学习总结 Hello!今天我们来学习一下这个神奇的图片处理的第三方函数库--PIL库 (本blog部分图片及代码来自网络) 这是一个支持图像存储.显示和处理的函数库,它能够处理几乎 ...

  2. 【1.6万字】连续抓屏保存为Gif动图 【keyboard库、PIL库、imageio库和pygifsicle库 探索】

    目录 一.抓屏保存为Gif 二.keyboard库 三.PIL 库 3.0 安装Pillow 3.1 打开本地图片 3.2 创建一张新图片 3.3 Image模块的常用属性 3.4 图片的模式和模式转 ...

  3. 美白,磨皮,搞笑图片处理

    一.关于PIL库的学习总结 PIL(Python Image Library)库是Python语言的第三方库,需要通过pip工具安装.安装PIL库的方法如下,需要注意,安装库的名字是pillow. : ...

  4. Python学习记录(一)PIL库对于图像操作方法的简单整理

    Python学习记录(一)PIL库对于图像操作方法的简单整理 首先对PIL库进行一个简单的介绍:Python图像库PIL(Python Image Library)是python的第三方图像处理库,由 ...

  5. 使用Python PIL库实现简单验证码的去噪处理

    想要识别验证码,收集足够多的样本后,首先要做的就是对验证码原始图片进行处理,对验证码识别分类之前,一般包括:将彩色图片转换成灰度图.将灰度图二值化和去除噪点三个基本过程.这里仅以比较简单的验证码为例, ...

  6. db2top详细使用方法_Py之PIL:Python的PIL库的简介、安装、使用方法详细攻略

    Py之PIL:Python的PIL库的简介.安装.使用方法详细攻略 目录 PIL库的简介 PIL库的安装 PIL库的用方法 1.几何图形的绘制与文字的绘制 2.绘制图形的各种案例 PIL库的简介 PI ...

  7. Py之PIL:Python的PIL库的简介、安装、使用方法详细攻略

    Py之PIL:Python的PIL库的简介.安装.使用方法详细攻略 目录 PIL库的简介 PIL库的安装 PIL库的用方法 1.几何图形的绘制与文字的绘制 2.绘制图形的各种案例 PIL库的简介 PI ...

  8. Python 之 使用 PIL 库做图像处理

    http://www.cnblogs.com/way_testlife/archive/2011/04/17/2019013.html Python 之 使用 PIL 库做图像处理 1. 简介. 图像 ...

  9. 什么是python的第三方库_python学习(十九)常见的第三方库

    介绍几个python中常见的第三方库. Pillow Pillow简称PIL,是python中常用的图形图像处理模块.写一个简单的例子 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

最新文章

  1. 机房收费系统【VB版】——上下机
  2. android手写简单mvp,[webpack]手写一个mvp版本的webpack
  3. php生成网页,php – 网页生成(CMS喜欢)
  4. cuda 5.0配置vs2008+Visual Assist X +安装问题解决
  5. 通过Postfix构建Exchange Server 2010邮件网关部署系列一:创建新域环境
  6. 无线打印 airprint 服务器,Docker容器实现Airprint 打印服务器功能
  7. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day7
  8. html5 jpg转webp格式转换,JPEG和WebP格式图片的差别
  9. 小米android版本升级包下载,小米11 Android 12 Beta 1更新包
  10. C# Winform 实现屏蔽键盘的win和alt+F4的实现代码
  11. java基础中多线程个线程add同一变量时的非原子性问题
  12. linux搭建MinIO集群
  13. U盘量产大致研究思路
  14. YAPI 重点功能使用介绍
  15. hdu4699(对顶栈模拟+简单dp)
  16. Approaching (Almost) Any Machine Learning Problem
  17. 生成离线报告-java将白色背景透明和裁减掉白色背景部分
  18. Google GSON GsonBuilder().setDateFormat(yyyy-MM-dd HH:mm:ss)不能格式化Data
  19. Android应用程序的开发
  20. java实现看门狗_Watchdog看门狗分析

热门文章

  1. python 之信号Signal
  2. Win10怎么设置虚拟内存?
  3. 【STM32】FreeRTOS中断示例
  4. java常见的报错_Java中常见的错误有哪些?
  5. 【读书笔记】沉默的大多数
  6. on java8学习笔记2022.2.19-2022.2.20
  7. Mac查看Android动态库依赖
  8. Electra 支持 iOS 11.4.1 正式版越狱
  9. system 函数被废除的替代方法
  10. 学习16位DOS汇编笔记