一键修改文件夹下图片文件的格式,适用于任何格式
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