python实现图片格式批量转换

python实现图片格式批量转换

一个简单的代码实现png转jpg,或者jpg转png

首先安装需要的环境:python 3.6
piilow
tqdm

将代码复制,保存在txt文件,然后终端该txt文件运行即可,程序运行结束会在输入路径下新建一个目录(./new_data)用于保存更改格式后的图片.

# -*- coding: utf-8
import os
import os.path
from PIL import Image
from tqdm import tqdm
import time
from datetime import datetime

class Pathroot():

    def __init__(self, root, sort_methods):
        '''初始化文件路径'''
        self.root = root
        self.sort_methods = sort_methods

    def get_path(self):
        ''' 输入路径,获取输入路径下所有文件的完整列表,并以字符串排序'''
        path1 = []
        for parent, dirnames, filenames in os.walk(self.root):
            for filename in filenames:
                currentPath = os.path.join(parent, filename)
                path1.append(currentPath)
        if self.sort_methods == 'str':
            path1.sort(key=lambda x: str(os.path.basename(x).split('/')[-1][:-4]))
        elif self.sort_methods == 'int':
            path1.sort(key=lambda x: int(os.path.basename(x).split('/')[-1][:-4]))
        else:
            print('Please choose correct sort methods!!! str or int')
        return path1


def get_newroot(old_root, new_root, number):
    '''返回新的路径'''
    new_root = new_root + '/' + str(old_root.split('/')[-1][:-4]) 
    if number == 1:
        new_root = new_root + '.png'
    if number == 2:
        new_root = new_root + '.jpg'
    return new_root


if __name__ == '__main__':

    # 输入图片路径、以及需要转换的格式
    starttime = datetime.now()
    print('--' * 10,'Begin_time:  ' ,time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), '--' * 10)
    input_path = input('Please enter the path to the folder :  ')
    tran_info = input('Please enter the image format to be converted: 1 or 2 (1 = png ,2 = jpg)  ')

    # 获取输入路径下全部图片的列表

    path_root = Pathroot(input_path, 'str')
    the_total_root = path_root.get_path()
    new_root = '/'.join(input_path.split('/')[:-1])+ '/new_data'
    os.mkdir(new_root)
    print('The number of images under the path : {:^10}'.format(str(len(the_total_root))))

    # 批量修改图片格式
    for i in tqdm(range(len(the_total_root))):
        img = Image.open(the_total_root[i])
        new_root1 = get_newroot(the_total_root[i], new_root, int(tran_info))
        img.save(new_root1)
    endtime = datetime.now()

    # 程序运行结束,打印结果
    print('The program has ended, please check the results!!!')
    print("RunTime: {} h--{} m--{} s".format(endtime.hour-starttime.hour, endtime.minute-starttime.minute, endtime.second-starttime.second))
    print('--' * 10,'Stop_time:  ' ,time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), '--' * 10)

终端运行结果如下:

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值