#-*- coding:utf-8 -*-
from PIL import Image
import os
import glob
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#拼接出图片的完整url
print(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#拼接出图片的完整url
print(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'
二、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)