一键修改文件夹下图片文件的格式,适用于任何格式

 

我的文件分布如上,本方法可实现一键修改所有图片文件的格式,例如将现有的png格式修改为jpg格式。

下面上代码:

import os
from PIL import Image
# 图片路径
CONVERT_PATH = "D:\\dataset\\test"
files   = os.listdir(CONVERT_PATH) #找到所有文件列表
# 转换列表
List= []
print(files)

# n,e=os.path.splitext("E:\\dataset\\train\\001\\1image1.jpg")
# print(n,e)
# a=os.path.join('"E:\\dataset\\train\\001',n)
# print(a)
# 遍历文件夹,储存webp格式的路径到列表内

def convertImage(filePath):
    a_files = os.listdir(filePath)  #把filepath下的文件全部列出来包括文件夹,但只有一级
    for a_files_name in a_files:
        sPath = os.path.join(filePath,a_files_name)
        if os.path.isdir(sPath):  #存在例如001的文件夹
           convertImage(sPath)  #如果是文件夹就继续递归检索
        c,d = os.path.splitext(sPath)
        if d == ".png":
          List.append(c)

 

for file_name in files:    #file_name为001,002,003等
    nPath = os.path.join(CONVERT_PATH, file_name)
    # 文件夹
    if os.path.isdir(nPath):   #判断是不是目录
     	convertImage(nPath)  
    elif os.path.isfile(nPath):   #这里是用来判断路径下是不是直接存在图片,例如0001.jpg
        a,b=os.path.splitext(nPath)
        if b==".png":        
          List.append(a)


def convert():
    for jpgPath in List:
        img = Image.open(jpgPath+".png")  #打开png格式的图片
        img.save(jpgPath+".jpg")   #修改格式为jpg
        os.remove(jpgPath+".png")  #删除原来的png格式图片
 
convert()

基本都在注释里注明了代码的功能了,不过有个地方需要说一下,c,d = os.path.splitext(sPath),这里splitext的作用是传入sPath路径后,将文件的后缀与前面分隔开,例如sPath="D:\dataset\test\001\000001.png",这时c等于D:\dataset\test\001\000001,而d等于.png

其他地方应该比较好理解了,下面就是结果了

 

 

 当然可以修改为任何的格式,只需将代码中的.jpg改成你想要的格式即可。

 img.save(jpgPath+".jpg")   #修改格式为jpg

                                                             文章到这就结束啦 

求点赞 的图像结果

猜你喜欢

转载自blog.csdn.net/qq_58277732/article/details/122278201