在之前的文章中,介绍了图片的压缩技术,这里讲解如何利用python批量将图片改为指定后缀的格式。当然,也可以为深度学习批量更改文件后缀,例如在分割中,可能需要img和mask的图片名称完全一致等等
文中使用的库函数是python的PIL库函数(pillow),安装如下
pip install pillow
Tips :
image_format = ['.jpg','.jpeg','.png','.gif','.bmp','.tiff','.ai','.cdr','.eps'] # 常见的图片后缀名
代码中会有一个常见图片后缀的列表,为了后面的使用,如果使用的图片后缀不在里面,可以自行添加
代码如下:
因为有的图片名称很长,甚至中途还会将后缀出现,例如 sda1233pngddwsa.png
但无论怎样风骚的文件名,不可能出现带 . + 后缀 的字符串,因为会直接报错。所以这里image_format 列表文件名都加了 . 方便遍历
- from PIL import Image
-
-
- def main(img_path,img_fm):
- image_format = ['.jpg','.jpeg','.png','.gif','.bmp','.tiff','.ai','.cdr','.eps'] # 常见的图片后缀名
-
- for i in image_format:
- if i in img_path:
- ret_path = img_path.split(i)[0] # 文件名
- ret_path = ret_path + '.' + img_fm # 返回的图片名
-
- img = Image.open(img_path).convert('RGB')
- img.save(ret_path)
-
-
- if __name__ == '__main__':
- root = 'test.png' # 传入图片的路径
- img_format = 'jpeg' # 待更改的后缀格式 jpg png jpeg ...
-
- main(img_path=root,img_fm=img_format)
效果如下:

测试的目录如下:

目的是将demo目录的所有图片更改为 jpg 格式,并且保存在新的目录
代码:
- from PIL import Image
- import os
-
-
- def main(img_path,img_fm):
- image_format = ['.jpg','.jpeg','.png','.gif','.bmp','.tiff','.ai','.cdr','.eps'] # 常见的图片后缀名
-
- # 返回的新目录
- ret_folder_path = img_path + '_ret'
- if not os.path.exists(ret_folder_path):
- os.makedirs(ret_folder_path)
-
- image_list = [i for i in os.listdir(img_path)] # 所有的图片文件
-
- for im in image_list:
- for i in image_format:
- if i in im:
- ret_path = im.split(i)[0] # 文件名
- ret_path = ret_path + '.' + img_fm # 返回的图片名
-
- img = Image.open(os.path.join(img_path,im)).convert('RGB')
- img.save(os.path.join(ret_folder_path,ret_path))
-
-
- if __name__ == '__main__':
- root = 'demo' # 传入图片文件夹目录
- img_format = 'jpg' # 待更改的后缀格式 jpg png jpeg ...
-
- main(img_path=root,img_fm=img_format)
效果如下:

测试目录:

代码:
- from PIL import Image
- import os
-
-
- def main(img_path,img_fm):
- image_format = ['.jpg','.jpeg','.png','.gif','.bmp','.tiff','.ai','.cdr','.eps'] # 常见的图片后缀名
-
- # 返回的新目录
- ret_folder_path = img_path + '_ret'
- if not os.path.exists(ret_folder_path):
- os.makedirs(ret_folder_path)
-
- sub_folder = [i for i in os.listdir(img_path)]
-
- for sf in sub_folder:
- os.makedirs(os.path.join(ret_folder_path,sf))
-
- for i in os.listdir(os.path.join(img_path,sf)): # 图片名
- for j in image_format:
- if j in i:
- ret_path = i.split(j)[0] # 文件名
- ret_path = ret_path + '.' + img_fm # 返回的图片名
-
- img = Image.open(os.path.join(img_path,sf,i)).convert('RGB')
- img.save(os.path.join(ret_folder_path,sf,ret_path))
-
-
- if __name__ == '__main__':
- root = 'demo' # 传入图片文件夹目录
- img_format = 'jpg' # 待更改的后缀格式 jpg png jpeg ...
-
- main(img_path=root,img_fm=img_format)
效果演示:
