python换图片_python 批量更换图片格式脚本

问题:将某文件下的所有jpg的图片更换为png的图片

简单的实现:

# -*- coding:utf-8 -*-

from os.path import splitext

import glob

from PIL import Image

def get_all_file(filename):

files = glob.glob(filename)

return files

def to_ather_file(files, type):

for jpg in files:

im = Image.open(jpg)

png = splitext(jpg)[0]+"." + type

im.save(png)

print png

if __name__ == "__main__":

filename = "./image/*.[Jj][Pp][Gg]"

files = get_all_file(filename)

to_ather_file(files, "png")

这是一种很简单的是实现方法,就是先用glob获得某路径下的所有文件,该文件下都是jpg图片(题目是给定的,也可以考虑存在其他图片的情况的处理方式,就是获得文件的后缀名,判断是否为jpg),然后依次读入图片,使用splitext获得文件名和后缀名,然后按照要求重组文件名并保存就好了。

这里介绍两个部分:

glob模块:

在python中,glob模块是用来查找匹配的文件的    在查找的条件中,需要用到Unix shell中的匹配规则:

*    :   匹配所所有

?    :   匹配一个字符

*.*  :   匹配如:[hello.txt,cat.xls,xxx234s.doc]

?.*  :   匹配如:[1.txt,h.py]

?.gif:   匹配如:[x.gif,2.gif]

可以参考:fnmatch    如果没有匹配的,glob.glob(path)将返回一个空的list:[]

也就说:glob是用来寻找文件的。某种命名规则的文件的。

import glob

def get_all():

'''获取目录[c:\\tmp]下面所有的文件'''

return glob.glob('c:\\tmp\\*.*')

def get_my_file():

'''获取目录[c:\\tmp]下面文件名为4个字符的文件'''

return glob.glob('c:\\tmp\\????.txt')

def get_batch_file():

'''获取目录[c:\\tmp]下面扩展名为\'.txt\'的文件'''

return glob.glob('c:\\tmp\\*.txt')

def main():

print('获取目录[c:\\tmp]下面所有的文件:')

tem_files = get_all()

print(tem_files)

print('获取目录[c:\\tmp]下面文件名为4个字符的文件:')

tem_files = get_my_file()

print(tem_files)

print('获取目录[c:\\tmp]下面扩展名为\'.txt\'的文件:')

tem_files = get_batch_file()

print(tem_files)

if __name__ == '__main__':

main()

python文件操作:

有关文件夹与文件的查找,删除等功能 在 os 模块中实现。使用时需先导入这个模块,

导入的方法是:

import os

1、将一个路径名分解为目录名和文件名两部分

fpath , fname = os.path.split( "你要分解的路径")

例如:

a, b = os.path.split( "c:\\123\\456\\test.txt" )

print a

print b

显示:

c:\123\456

test.txt

2、 分解文件名的扩展名

fpathandname , fext = os.path.splitext( "你要分解的路径")

例如:

a, b = os.path.splitext( "c:\\123\\456\\test.txt" )

print a

print b

显示:

c:\123\456\test

.txt

文件操作还有很多有用的函数,可以通过查找手册来看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值