2019独角兽企业重金招聘Python工程师标准>>>

#-*- coding:utf-8 -*-
from PIL import Image
import os
import globos.chdir(r'F:\work\images')#图片所在的文件夹
for file_names in glob.glob('*.bmp'):#找出所有的后缀为bmp的格式的图片print(file_names)file_path = r'F:\work\images'+'\\'+file_names#拼接出图片的完整urlprint(file_path)out_path = os.path.splitext(file_path)[0]+'.jpg'Image.open(file_path).save(out_path)
print('转换成功')

代码做的比较简洁,没有错误处理,还多了一些没什么用的print语句,但事实上那是在测试看得到的图片名字,图片路径是否正确。代码挺简单的,但是这里用到的三个模块会在后面记录下来,毕竟好记性不如烂笔头,留着以后查看所用。

先说上面的代码,先声明文件编码,然后引入三个所需要的模块PIL,os,glob

#-*- coding:utf-8 -*-
from PIL import Image
import os
import glob

定位到图片所在的文件夹,for语句找出所有后缀为bmp的图片的名字的全称(包含后缀名),输出看得到的图片的名字是否正确,拼接图片的完整路径,要注意转义字符‘\’,输出看拼接的路径是否正确,然后将bmp的格式的图片打开,存成jpg的格式的图片,所有图片处理完后,打印成功。

os.chdir(r'F:\work\images')#图片所在的文件夹
for file_names in glob.glob('*.bmp'):#找出所有的后缀为bmp的格式的图片print(file_names)file_path = r'F:\work\images'+'\\'+file_names#拼接出图片的完整urlprint(file_path)out_path = os.path.splitext(file_path)[0]+'.jpg'Image.open(file_path).save(out_path)
print('转换成功')

接下来记录所用到的三个模块的一些基本用法:

一、PIL模块全称python Imaging Library (PIL)是PythonWare公司提供的免费的图像处理工具包,是python下的图像处理模块,支持多种格式,并提供强大的图形与图像处理功能。虽然在这个软件包上要实现类似MATLAB中的复杂的图像处理算法并不太适合,但是Python的快速开发能力以及面向对象等等诸多特点使得它非常适合用来进行原型开发。对于简单的图像处理或者大批量的简单图像处理任务,python+PIL是很好的选择。

下载PIL,linux可以直接通过命令:

sudo apt-get install python-imaging

windows平台的可以直接去PIL官网下载exe文件:http://pythonware.com/products/pil/

from PIL import Image
im = Image.open(r'F:\work\images\alien.jpg')#打开路径下的alien.jpg图片
im.show()#显示已经打开的图片
new_im01 = im.resize((56,56),Image.BILINEAR)#将图片缩小放大至56*56
new_im02 = new_im01.rotate(90)#旋转图片90度
new_in02.save('new_in02.jpg')#保存图片,且图片名为new_in02.jpg'

具体的参考:PIL中文手册、PIL官方文档、华秋实的博客《初试PIL》

二、OS模块

一般用于处理当前所在的目录,由于代码极有可能在其它电脑或其它系统运行,所以环境有所不一样,所工作的当前目录也有可能不一样,而os能解决这些问题。

os.name#输出字符串指示正在使用的平台,window显示'nt',linux则显示'posix'
os.getcwd()#函数得到当前工作目录,即当前python脚本工作的目录路径。
os.listdir()#返回指定目录下的所有文件和目录名。
os.remove()#删除一个文件
os.system()#运行shell命令
os.sep#可以取代操作系统特定的路径分割符。
os.linesep#字符串给出当前平台使用的行终止符,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。
os.path.split()#函数返回一个路径的目录名和文件名
os.path.isfile()和os.path.isdir()#函数分别检验给出的路径是一个文件还是目录。
os.path.exists()#函数用来检验给出的路径是否真地存在
os.path.abspath(name)#获得绝对路径
os.path.normpath(path)#规范path字符串形式
os.path.getsize(name)#获得文件大小,如果name是目录返回0L
os.path.splitext()#分离文件名与扩展名
os.path.join(path,name)#连接目录与文件名或目录
os.path.dirname(path)#返回文件路径
os.chdir()#用于改变当前工作目录到指定的路径。

参考:os模块中文文档

三、glob模块

glob.glob:返回所有匹配的文件路径列表。它只有一个参数pathname,定义了文件路径匹配规则,这里可以是绝对路径,也可以是相对路径。

import glob
print(glob.glob(r'F:\work\images\*.bmp'))#获得指定目录下的所有bmp格式的图片
print(glob.glob(r'..\*.bmp'))#获得当前工作目录下的上级目录的所有bmp图片

glob.iglob:获取一个可编历对象,使用它可以逐个获取匹配的文件路径名。与glob.glob()的区别是:glob.glob同时获取所有的匹配路径,而glob.iglob一次只获取一个匹配路径。

import glob
f = glob.iglob(r'../*.py')
print(f)#<generator object iglob at 0x00B9FF80>
for py in f:print(py)

转载于:https://my.oschina.net/u/3629884/blog/1506825

学习笔记(番外篇)——python批量转换图片格式相关推荐

  1. python批量转换图片格式

    import os from PIL import Image as img from tqdm import tqdmpath = 'data/' # 待转换格式的图片所在文件夹 path2 = ' ...

  2. TikZ学习笔记番外篇: 使用tikzcd包绘制交换图

    什么是交换图 映射的合成关系, 用图表示出来, 称为交换图. 怎么绘制 有很多方法可以绘制, 都是基于LaTeX\LaTeXLATE​X 的, 这里我使用了TikZ\mathrm{T}i\mathrm ...

  3. cocos2d-x学习笔记番外篇05:如何快速屏蔽触摸

    cocos2d-x有个问题,即使暂停CCScene运行,触摸仍然有效,有些菜单和按钮仍然会被触发. 所以有的时候我们要手动屏蔽触摸,尤其是在弹出计费画面的,或者使用一些本平台自带控件的时候. 做法有几 ...

  4. python批量转换图片格式_python批量将图片转换为JPEG格式

    标签: # -*- coding:utf-8 -*- import os from PIL import Image def resize(path): filelist = os.listdir(p ...

  5. Rust学习日记番外篇——代码写诗

    Rust学习日记番外篇--代码写诗 中秋节即将来临啦~~提前祝大家月饼节快乐.今天看到了掘金的文章,有个代码写诗的活动,那我就小露一手了. 0x01 选定诗句 在掘金有下面几句诗可选. 举头望明月,低 ...

  6. unity学习笔记-番外(3d模型的动作设计以及导入-2018版)材质的替换以及动作穿模(自己的手穿模到自己的其他部位)

    unity学习笔记-番外(3d模型的动作设计以及导入) 动作设计白嫖方法 方法一:小k网 需要注意的地方 方法二:mixamo 需要注意的地方 材质的替换 一 动作的穿模 2021.5.13更新 -2 ...

  7. 怎么批量转换图片格式?这篇文章或许有用

    在网上冲浪的时候,我经常看到很多好看的图片或者有趣的表情包,兴致勃勃地下载下来之后才发现这些图片的格式千奇百怪,有些根本打不开.不知道小伙伴们有没有遇到过上述这种情况呢?遇到这种情况该怎么办呢?难道就 ...

  8. java批量转换图片格式

    废话不多直接上代码,代码其实也不多.... package com.qiao.testImage;import java.awt.image.BufferedImage; import java.io ...

  9. 怎么批量转换图片格式?

    怎么批量转换图片格式?在日常的工作过程中,小伙们时常需要将上百上千的图片进行格式转换,如果你一张一张图片进行转换,就需要消耗大量的时间和精力,时间就是金钱,我们不应该浪费大量时间在这种简单又重复的事情 ...

最新文章

  1. libev源码解析——监视器(watcher)结构和组织形式
  2. HDU 1873 看病要排队(结构体+优先队列)
  3. extjs获取焦点和失去焦点_ios输入框(input,select,textarea)失去焦点,页面不归位...
  4. 后BERT时代:15个预训练模型对比分析与关键点探究
  5. [20190530]oracle Audit文件管理.txt
  6. HDU2222【AC自动机(基础·模板)】
  7. arcgis oracle srid,ArcGIS——数据库空间SQL(二、oracle中ST_GEOMETRY函数使用)
  8. 木蚂蚁软件光盘 V2.0 2008元旦贺岁版
  9. 探索实践之软件构建(一)
  10. python爬贴吧回复内容_Python爬虫_获取贴吧内容
  11. Linux开发板启动需要登录密码设置方法
  12. 基于YOLO v5 的AI眼诊
  13. ESP8266在局域网和互联网下的使用
  14. VR全景:三维电商势不可挡
  15. 【高等教育6年+工作5年】的个人阶段性自述
  16. PG使用 nlpbamboo chinesecfg 中文分词
  17. PDA模拟中的问题1
  18. excel隔行填充颜色的三种方法
  19. Markdown设置图片大小
  20. 前端字体图标的使用总结

热门文章

  1. [BUUCTF-pwn]——qctf2018_stack2
  2. android4.0 菜单,Android 4.0.4系统曝光 增新Power菜单
  3. java webservice https_WebService的HTTPS访问——解决PKIX错误 | 字痕随行
  4. Struts2与Spring集成中的自动装配策略
  5. windows上hadoop安装(cygwin等)
  6. OSGi介绍及OSGi的Bundle应用
  7. LeetCode 82 删除排序链表中的重复元素 II python
  8. 什么都不说,来4波js
  9. 关于调试windows services的方法
  10. GIS中最短路径的实现