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

Posted 通信学生一枚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一键修改文件夹下图片文件的格式,适用于任何格式相关的知识,希望对你有一定的参考价值。

 

我的文件分布如上,本方法可实现一键修改所有图片文件的格式,例如将现有的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

                                                             文章到这就结束啦 

 

 

以上是关于一键修改文件夹下图片文件的格式,适用于任何格式的主要内容,如果未能解决你的问题,请参考以下文章

常见的图片格式

HEIC文件怎么打开,一键批量将HEIC图片转换JPG/PNG/BMP

HEIC文件怎么打开,一键批量将HEIC图片转换JPG/PNG/BMP

网页上常用的图片格式及使用场景

gitlab一键装后,在哪个文件里修改首页登录页面内容

PNG图片格式是最清晰的吗?其他格式转换成PNG的话 质量会有提高吗