• 利用pillow库(PIL)批量修改图片尺寸


    楔子

    平时使用Snipaste截图总是不注意图片的尺寸,导致保存了一堆大大小小尺寸不一的图片
    在写文档的时候插入图片显得很杂乱,因此抽空写了个小工具帮我批量格式化文件夹中的图片尺寸成一样的大小

    代码

    import os
    from tkinter import *
    
    
    class Application(object):
        def __init__(self):
            self.root = Tk()
            self.root.title('格式化图片尺寸')
            self.path = StringVar()
            self.size = StringVar()
    
            Label(self.root, text="目标路径:").grid(row=0, column=0)
            Entry(self.root, textvariable=self.path).grid(row=0, column=1)
            Button(self.root, text="路径选择", command=self.selectPath).grid(row=0, column=2)
    
            Label(self.root, text="目标大小:").grid(row=1, column=0)
            Entry(self.root, textvariable=self.size).grid(row=1, column=1)
            Button(self.root, text="确定选择", command=self.formatSize).grid(row=1, column=2)
    
            Button(self.root, text="退出程序", command=self.root.destroy).grid(row=2, column=2)
    
        def run(self):
            self.root.mainloop()
    
        def selectPath(self):
            from tkinter.filedialog import askdirectory
            path_ = askdirectory()
            self.path.set(path_)
    
        def formatSize(self):
            from PIL import Image
            from glob import glob
            import tkinter.messagebox as messagebox
            sourcesPathList = glob(os.path.join(self.path.get(), '*.png'))
            sourcesPathList.extend(glob(os.path.join(self.path.get(), '*.jpg')))
            sourcesPathList.extend(glob(os.path.join(self.path.get(), '*.jpeg')))
            sourcesPathList.extend(glob(os.path.join(self.path.get(), '*.bmp')))
    
            if not os.path.exists('./result'):
                os.mkdir('./result')
            try:
                if not sourcesPathList:
                    messagebox.showinfo('警告', '所选文件夹内容为空')
                    assert not '0'
                for p in sourcesPathList:
                    tmp = Image.open(p)
                    try:
                        res = tmp.resize([int(i) for i in self.size.get().split(',')], Image.ANTIALIAS)
                    except ValueError:
                        res = tmp.resize([int(i) for i in self.size.get().split(',')], Image.ANTIALIAS)
                    res.save(os.path.join('./result', p.split('\')[-1]), quality=95)
                messagebox.showinfo('提示', '修改成功')
            except (FileNotFoundError, AssertionError):
                messagebox.showinfo('警告', '修改失败')
    
    
    if __name__ == '__main__':
        app = Application()
        app.run()
    

    使用说明

    1、命令行 python formatPic.py

    2、
    3、点击路径选择(只需要选择图片文件所在的文件夹,推荐把要修改尺寸的图片都放到一个文件夹下)
    4、输入目标大小(100,200或者100,200,可以兼容中英文标点)
    5、点击确定选择
    6、修改成功或失败皆会有弹窗提示
    7、使用完毕点击退出程序即可关闭
    8、修改好尺寸的图片可以到脚本同路径下的 result 文件夹下查看

    【完】

  • 相关阅读:
    C#反射
    做下一周计划
    OFFSET 函数
    微信跳一跳学习笔记
    跳一跳脚本代码搬运
    预测羽毛球赛成绩学习笔记
    将Python123中作业成绩绘制成雷达图
    Matplotlib库
    Numpy库
    第四周作业
  • 原文地址:https://www.cnblogs.com/dmcs95/p/13200344.html
Copyright © 2020-2023  润新知