码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-06-28 00:41:52      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:split   log   dial   tor   一个   loop   alias   ica   oop   

楔子

平时使用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 文件夹下查看

【完】

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

标签:split   log   dial   tor   一个   loop   alias   ica   oop   

原文地址:https://www.cnblogs.com/dmcs95/p/13200344.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!