开发者社区> 问答> 正文

Python3 批量修改JPG图片尺寸?

Python3 批量修改JPG图片尺寸?

1.批量修改当前文件夹下的jpg图片到设置的尺寸
2.将修改后的图片移动到 new_img 这个文件夹下

展开
收起
珍宝珠 2019-12-27 16:51:41 908 0
1 条回答
写回答
取消 提交回答
  • 导入库

    from PIL import Image                                # 处理图片模块
    import os
    import shutil                                        # 移动文件模块
    
    

    如果没有请提前安装相应的库.

    定义一个函数用来处理图片尺寸

    def smaller_img(x, y, path):                              # x,y用来传入尺寸,path用来传入路径
        old_img = Image.open(path)
        img_deal = old_img.resize((x, y), Image.ANTIALIAS)    # 转换图片
        img_deal = img_deal.convert('RGB')                    # 保存为jpg格式才需要
        img_deal.save('新的文件名')
    
    

    遍历当前文件夹下的文件路径

    now_path = os.getcwd()
    new_path = os.mkdir(now_path + '\\' + 'new_img')  # 创建一个名为new_img的文件夹
    for file_name in os.listdir(now_path):
        files_path = now_path + '\\' + file_name
        print(files_path)                             # 输出当前目录下所有的文件的绝对路径
    
    

    将修改后的图片移动到创建的新文件夹
    我使用笨办法,用字符串判断的方式,来确定是否是修改后的图片文件.
    shutil 模块

    for move_name in os.listdir(now_path):
                move_path = now_path + '\\' + move_name
                if 'switch' in move_path:
                    shutil.move(move_path,new_dir)             # shutil.move(文件/目录 , 目录)
                else:
                     print(move_path, '无须移动')
    
    

    把这些功能整合起来

    from PIL import Image
    import os
    import shutil
    
    x = input('请输入需要修改的尺寸,长:')
    x = int(x)
    y = input('请输入需要修改的尺寸,高:')
    y = int(y)
    
    now_path = os.getcwd()
    new_path = os.mkdir(now_path + '\\' + 'new_img')
    new_dir = now_path + '\\' + 'new_img'
    
    # 修改图片大小
    def smaller_img(x, y, path):
        path = str(path)
        old_img = Image.open(path)
        img_deal = old_img.resize((x, y), Image.ANTIALIAS) 
        img_deal = img_deal.convert('RGB') 
        img_deal.save('switch_' + file_name)
    # 遍历文件夹下的文件,并判断是否是JPG文件
    for file_name in os.listdir(now_path):
        files_path = now_path + '\\' + file_name
        if 'jpg' in files_path:
            smaller_img(x, y, files_path)
            # 遍历文件来判断是否是转换后的jpg文件
            for move_name in os.listdir(now_path):
                move_path = now_path + '\\' + move_name
                if 'switch' in move_path:
                    shutil.move(move_path,new_dir)
                else:
                     print(move_path, '无须移动')
            print(file_name, 'switch success')
        else:
            print(file_name, 'is not img')
    
    2019-12-27 16:59:29
    赞同 1 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载