python实现批量图片格式转换

文章目录

  • 前言
  • 一、转换思路
  • 二、python脚本分步代码
    • 1.引入库
    • 2.定义输入图片路径和输出图片路径
    • 3.实现格式转换函数
  • 三、python脚本完整程序
  • 总结


前言

本文重点介绍普通图片格式怎么相互转换,如jpg格式图片怎么批量转化为png格式。在深度学习项目中,有时我们收集到的数据集图片格式不统一,有的代码支持多种格式图片输入,有的则只支持个别格式,所以这时,我们需要通过脚本来转换图片格式。不说废话,直接上代码。


提示:以下是本篇文章正文内容,下面案例可供参考

一、转换思路

使用PIL中的Image模块,对图像进行读取打开,然后输出设定为自己想要的格式即可,重点是要突出文件夹中多张图片也可以批量装换。

二、python脚本分步代码

1.引入库

代码如下(示例):

# 将jpg格式转位png
import os
from PIL import Image
import shutil
import sys

2.定义输入图片路径和输出图片路径

代码如下(示例):

output_dirHR = './pa_car_img/'
output_dirLR = './pa_car_i/'
if not os.path.exists(output_dirHR):
    os.mkdir(output_dirHR)
if not os.path.exists(output_dirLR):
    os.mkdir(output_dirLR)

3.实现格式转换函数

def image2png(dataset_dir,type):
    files = []
    image_list = os.listdir(dataset_dir)
    files = [os.path.join(dataset_dir, _) for _ in image_list]
    for index,jpg in enumerate(files):
        if index > 100000:
            break
        try:
            sys.stdout.write('\r>>Converting image %d/100000 ' % (index))
            sys.stdout.flush()
            im = Image.open(jpg)
            png = os.path.splitext(jpg)[0] + "." + type
            im.save(png)
            # 将已经转换的图片移动到指定位置
            '''
            if jpg.split('.')[-1] == 'jpg':
                shutil.move(png,output_dirLR)
            else:
                shutil.move(png,output_dirHR)
            '''
            shutil.move(png, output_dirHR)
        except IOError as e:
            print('could not read:',jpg)
            print('error:',e)
            print('skip it\n')
 
    sys.stdout.write('Convert Over!\n')
    sys.stdout.flush()

三、python脚本完整程序

# 将jpg格式转位png
import os
from PIL import Image
import shutil
import sys
 
# Define the input and output image
output_dirHR = './pa_car_img/'
output_dirLR = './pa_car_i/'
if not os.path.exists(output_dirHR):
    os.mkdir(output_dirHR)
if not os.path.exists(output_dirLR):
    os.mkdir(output_dirLR)
 
 
 
def image2png(dataset_dir,type):
    files = []
    image_list = os.listdir(dataset_dir)
    files = [os.path.join(dataset_dir, _) for _ in image_list]
    for index,jpg in enumerate(files):
        if index > 100000:
            break
        try:
            sys.stdout.write('\r>>Converting image %d/100000 ' % (index))
            sys.stdout.flush()
            im = Image.open(jpg)
            png = os.path.splitext(jpg)[0] + "." + type
            im.save(png)
            # 将已经转换的图片移动到指定位置
            '''
            if jpg.split('.')[-1] == 'jpg':
                shutil.move(png,output_dirLR)
            else:
                shutil.move(png,output_dirHR)
            '''
            shutil.move(png, output_dirHR)
        except IOError as e:
            print('could not read:',jpg)
            print('error:',e)
            print('skip it\n')
 
    sys.stdout.write('Convert Over!\n')
    sys.stdout.flush()
 
 
 
if __name__ == "__main__":
    current_dir = os.getcwd()
    print(current_dir)  # /Users/gavin/PycharmProjects/pygame
    data_dir = 'F:/feiyi_car_data/pa_car_img/'
 
    image2png(data_dir,'png')
 

总结

以上就是今天要讲的内容,脚本超级好用,学好python,大大提高工作效率!觉得还不错的,感谢关注收藏,后续还会继续分享好用的数据处理脚本。

你可能感兴趣的:(深度学习,目标识别检测,人工智能,python,深度学习,开发语言,脚本工具,图片格式转换)