1.Pillow库介绍

Pillow是Python里的图像处理库,提供了了广泛的文件格式支持,强大的图像处理能力,主要包括图像储存、图像显示、格式转换以及基本的图像处理操作等;

安装

pip install pillow

2.Image类

PIL中最重要的类是Image类,使用前需要先从PIL中导入Image类,要从文件加载图像可以使用Image类中的open()函数:Image.open(fp, mode ='r' ),如果加载成功则会返回一个Image对象,fp是图片路径,mode是模式。图像的对象属性有filename源文件的文件名或路径、format图片的格式、size图片大小,以像素为单位、mode图片模式、width图像宽度、height图像高度、palette调色板表等;

save(fp, format=None, **params):保存图像到给定的文件名下,如果没有指定格式则可以使用文件扩展名来确定要使用的格式,无返回值。fp是文件名或路径,format可选的格式覆盖;

thumbnail(size, resample=3):指定图片的像素,size是大小,resample是重采样滤波器,可以是Image.NEAREST、Image.BILINEAR、Image.BICUBIC或者Image.LANCZOS,默认为Image.BICUBIC;

rotate(angle, resample=0, expand=0, ceter=None, translate=None):旋转图片的方向,返回旋转后的图像副本,一个Image对象 。angle角度,逆时针旋转、resample重采样滤波器、expand是否展开、center旋转中心、translate旋转后;

filter(filter):给图片添加滤镜,返回一个Image对象,filter是过滤器;

transpose(method):旋转或翻转图像,返回旋转或翻转后的图像副本,一个Image对象。method可以是Image.FLIP_LEFT_RIGHT、Image.FLIP_TOP_BOTTOM、Image.ROTATE_90、Image.ROTATE_180、Image.ROTATE_270、Image.TRANSPOSE或者Image.TRANSVERSE;

show():显示这个图像,此方法主要用于调试目的;

# 获取图片的基本信息

from PIL import Image

im = Image.open('./image.jpg')

# 获取图片的格式,大小,以及模式

print(im.format, im.size, im.mode)

# 指定图片的像素

im.thumbnail((128,128))

im.save('./image_128_128.jpg')

# 旋转图片的方向

dest_im = im.rotate(90)

dest_im.save('./image_rotate.jpg')

# 给图片添加滤镜

dest_im = im.filter(ImageFilter.GaussianBlur)

dest_im.show()

# 图片反转

dest_im = im.transpose(Image.FLIP_LEFT_RIGHT) # 左右反转

dest_im = im.transpose(Image.FLIP_TOP_BOTTOM) # 上下反转

dest_im.show()

# 图片上写文字

image = Image.open('image.jpg')

img_draw = ImageDraw.Draw(image)

img_draw.text((770,250),'hello world',fill='green') # 放上文字信息到图像上

image.show()

3.ImageDraw模块

ImageDraw模块为Image对象提供简单的2D图形,可以使用此模块创建新图像,注释或润饰现有图像,以及动态生成图形以供Web使用;

ImageDraw.Draw(im,mode=None):创建可用于在给定图像中绘制的对象,im要绘制的图像、mode 用于颜色值的可选模式;

ImageDraw.text(xy,text,fill=None,font=None,anchor=None,spacing=0,align =“left”,direction = None,features=None,language=None):在给定位置绘制字符串,xy文本的左上角、text要绘制的文本、fill用于文本的颜色、direction文字的方向、language文字的语言;

ImageDraw.point(xy,fill=None):在给定坐标处绘制点,xy元组的序列或类似的数值、fill用于点的颜色; 更多可以查看网址:https://pillow.readthedocs.io/en/latest/reference/index.html

4.批量将图片的大小设置为指定大小

import os

from PIL import Image

# 源目录

project_dir = os.path.dirname(os.path.abspath(__file__))

input = os.path.join(project_dir, 'src')

# 输出目录

output = os.path.join(project_dir, 'dest')

def modify():

# 切换目录

os.chdir(input)

# 遍历目录下所有的文件

for image_name in os.listdir(os.getcwd()):

print(image_name)

im = Image.open(os.path.join(input, image_name))

im.thumbnail((128, 128))

im.save(os.path.join(output, image_name))

if __name__ == '__main__':

modify()

用python批量处理图片_Python学习九十三天:Python批量处理图片相关推荐

  1. python创建虚拟环境_Python学习笔记:创建Python开发Web程序的虚拟环境

    学习Excel技术,关注微信公众号: excelperfect 这段时间利用业余时间在断断续续地看Eric Matthes著的<Python编程从入门到实践>这本书,毫不夸张地说,这真的是 ...

  2. python硬件编程_Python学习日记_《Python硬件编程实战》笔记_Mr_Ouyang

    书名: Python硬件编程实战 作者: 李茂 出版社: 机械工业出版社 [此处需要插入图片 Python封面] 笔者简评:不太适宜购买,全书大篇幅在用图片来解释极简单的细节,对于那些需要作者去深挖. ...

  3. python中二进制文件_Python学习基础篇 -6: Python中的文件操作

    前言:本专栏以Python为主题,并尽可能保持每星期两到三更,直到将Python的基础知识浅析和讲解完毕,同时,有一定基础的同学可以移步 Python实战专栏 . 文件有有什么用 文件可以看作一个仓库 ...

  4. python __name__怎么使用_python学习笔记26(python中__name__的使用)

    在python中,每个py文件都是一个模块,也都是一个可执行文件,即包含main方法.因此,对每个py文件,可以单独运行,也可以import它给其他客户使用,这两种情况不一样. 1. 如果模块是被导入 ...

  5. python tkinter 表格_python学习笔记(Tkinter编程利用Treeview实现表格自动更新)

    博主今天总结这段时间抽空写的一个GUI编程项目 功能是查看本地打印机队列,可选择指定队列重新打印 直接上图 UI设计包括3个区域左上方,右上方和下方列表区域 使用网格grid方法来分配位置 下面是界面 ...

  6. python字典、列表、元祖使用场景_python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍...

    python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍 一丶元祖 1.元祖简介 元祖跟列表类似.只不过是有区别的. 如下: tuple(元祖英文) 跟列表类似, 元素不能 ...

  7. 自学python困难吗_Python学习难不难?零基础好学吗?

    Python学习难不难?零基础好学吗?我想对于很多人来说,这都是非常关键的问题,也是很多人都在疑惑的问题.现在市场发展,行业的竞争压力是非常大的,转型的人也是非常多,对于不少人转型人才来说,Pytho ...

  8. python print 换行_Python学习 | Python的基础语法

    Python 语言与 Perl,C 和 Java 等语言有许多相似之处.但是,也存在一些差异,编写Paython程序之前需要对语法有所了解,才能编写规范的Python程序. 一.行和缩进 Python ...

  9. python本地库_Python学习第71课-本地建立repository仓库

    [每天几分钟,从零入门python编程的世界!] 我们在本地建立一个repository(仓库),这个repository(仓库)就是用来对我们的文件版本进行跟踪的.repository(仓库)就是通 ...

最新文章

  1. python mysql ssh隧道_在python中使用ssh隧道连接mysql
  2. dijkstra算法matlab代码_头脑风暴优化(BSO)算法(附MATLAB代码)
  3. DataGridView中实现点击单元格Cell动态添加自定义控件
  4. 资讯|WebRTC M93 更新
  5. 如何命令行结束react程序_想要成为前端Star 吗?一首歌时间将React / Vue 应用Docker 化...
  6. X-Frame-Options 响应头
  7. 2016全国计算机二级题,2016全国计算机二级考生试题及答案
  8. html判断用户名的合法性,javascript简单判断输入内容是否合法的方法
  9. 17-正交矩阵和Gram-Schmidt正交化
  10. Linux下执行程序出现 Text file busy 提示时的处理方式
  11. CSS简易导航列表样式
  12. Java培训学习之分词工具之HanLP介绍
  13. DHCP和域的概念知识
  14. Zigbee,esp8266(wifi),蓝牙协议三种通信方式
  15. vue 页面使用两套el-form表单并且嵌套使用el-checkbox
  16. 关于旁路由设置后,主路由WIFI无法上网的问题
  17. c4droid语言贪吃蛇代码,在C4droid上可以运行的贪吃蛇的C源代码是
  18. 【无标题】奥的斯故障代码分析(新版)
  19. python协程初步学习使用
  20. 学计算机的女生后来怎样了

热门文章

  1. 长安大学转计算机专业,长安大学本科学生转换专业管理办法
  2. 时间“照妖镜”のmanic time
  3. 如何选择理想的高性价比空间服务商———服务器合租,虚拟主机
  4. python爬取17000个球员_Python爬取NBA球员生涯数据及简单可视化
  5. 如何解决弹出 C:\WINDOWS\system32\Macromed\Flash\Flash32_11_2_202_228.ocx 问题。
  6. 原来 SQL 中的 NULL 是这么回事儿
  7. 科思创进博会宣布筹建上海新工厂;碧迪医疗进博会签订总值达2.7亿元合作协议 | 美通社头条...
  8. 电脑上被人们用到爆的好用软件,款款精品,速速收藏起来吧
  9. WAF防火墙有什么用
  10. 获取最近一年十二月份的月份