前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python图片脚本3-批量图片格式转换(详细注释+GUI界面+exe可执行文件)

python图片脚本3-批量图片格式转换(详细注释+GUI界面+exe可执行文件)

原创
作者头像
laity
修改2025-02-26 17:59:55
修改2025-02-26 17:59:55
23800
代码可运行
举报
文章被收录于专栏:python脚本python脚本
运行总次数:0
代码可运行

@TOC

前言

本文介绍一个用python第三方库pillow写的批量处理图片格式转换的脚本,以及脚本对应的使用tkinter库写的GUI界面并把它打包成exe可执行文件,打包成可执行文件的好处就是它支持多种操作系统,如 Windows、Linux 和 Mac OS 等。不了解pillow库和tkinter库的可以看我之前的文章,具体在下面的导航区域。

导航

pillow库的使用篇

图片脚本篇

Tkiner库的使用篇

  • 图形化界面的开发(GUI):Tkinter库的使用-1(综述)
  • 图形化界面的开发(GUI):Tkinter库的使用-2(Label+Message+Text)
  • 图形化界面的开发(GUI):Tkinter库的使用用-3(Button+Radiobutton+Checkbutton)
  • 图形化界面的开发(GUI):Tkinter库的使用-4(Entry+Spinbox+Listbox+Combobox)
  • 图形化界面的开发(GUI):Tkinter库的使用-5(Menu+Canvas+Scale+Scrollbar)

批量处理图片尺寸脚本源码

代码语言:python
代码运行次数:0
运行
复制
from PIL import Image # 图片处理库
import os # 文件管理库
# 批量图片格式转换函数
"""
参数:
input_path: 输入文件夹路径
output_path: 输出文件夹路径
format: 文件格式/后缀
"""
def convert_images(input_path, output_path, format):
    # 判断输出文件夹是否存在,不存在则创建
    if not os.path.exists(output_path):
        os.makedirs(output_path)
        # 遍历输入文件夹
    for file in os.listdir(input_path):
        # 判断文件是否为图片
        if file.endswith('.jpg') or file.endswith('.png') or file.endswith('.jpeg') or file.endswith('.bmp'):
            img = Image.open(os.path.join(input_path, file))
            # 转换图片格式
            img.save(os.path.join(output_path, file.split('.')[0] + '.' + format))
            print(f'{file}-->{file.split(".")[0] + "." + format} 转换完成')
input_path = '../iamges'
output_path = 'output'
format = 'jpg'
convert_images(input_path, output_path, format)

效果

GUI界面源码

代码语言:python
代码运行次数:0
运行
复制
from PIL import Image # 图片处理库
import os # 文件管理库
import tkinter as tk # GUI库
from tkinter import filedialog, messagebox # filedialog 用于选择文件夹,messagebox 用于提示信息
# 批量图片格式转换函数
"""
参数:
input_path: 输入文件夹路径
output_path: 输出文件夹路径
format: 格式
"""
def convert_images(input_path, output_path, format):
    # 判断输出文件夹是否存在,不存在则创建
    if not os.path.exists(output_path):
        os.makedirs(output_path)
        # 遍历输入文件夹
    for file in os.listdir(input_path):
        # 判断文件是否为图片
        if file.endswith('.jpg') or file.endswith('.png') or file.endswith('.jpeg') or file.endswith('.bmp'):
            img = Image.open(os.path.join(input_path, file))
            # 转换图片格式
            img.save(os.path.join(output_path, file.split('.')[0] + '.' + format))
            print(f'{file}-->{file.split(".")[0] + "." + format} 转换完成')
input_path = '../iamges'
output_path = 'output'
format = 'jpg'
convert_images(input_path, output_path, format)

#GUI界面
def convert_images_gui():
    # 获取输入,输出路径和格式
    format = entry_format.get()
    input_path = entry_input.get()
    output_path = entry_output.get()
    # 调用批量图片格式转换函数
    convert_images(input_path, output_path, format)
    # 显示提示信息
    messagebox.showinfo('提示', '转换完成')
# 界面设计
root = tk.Tk()
# 设置窗口标题
root.title('批量图片格式转换')
# 设置窗口大小
root.geometry('400x400')
# 设置标签
label_input = tk.Label(root, text='输入文件夹路径:')
# 放置标签,并设置位置,第而行第五列(索引从0开始),padx和pady分别为左右边距和上下边距
label_input.grid(column=4, row=1, padx=10, pady=10)
# 设置输入框
entry_input = tk.Entry(root)
# 放置输入框
entry_input.grid(column=5, row=1, padx=10, pady=10)
# 设置按钮,点击按钮弹出文件选择对话框,并将选择的文件路径插入输入框,command参数为一个匿名函数,用于在点击按钮时执行
tk.Button(root, text="浏览",
          command=lambda: entry_input.delete(0, tk.END) or entry_input.insert(0, filedialog.askdirectory())).grid(column=6, row=1)
# 设置标签
label_output = tk.Label(root, text='输出文件夹路径:')
# 放置标签,并设置位置
label_output.grid(column=4, row=2, padx=10, pady=10)
# 设置输入框
entry_output = tk.Entry(root)
# 放置输入框,并设置位置
entry_output.grid(column=5, row=2,  padx=10, pady=10)
# 设置按钮,点击按钮弹出文件选择对话框,并将选择的文件路径插入输入框,command参数为一个匿名函数,用于在点击按钮时执行
tk.Button(root, text="浏览",
          command=lambda: entry_output.delete(0, tk.END) or entry_output.insert(0, filedialog.askdirectory())).grid(column=6, row=2)
# 设置标签
label_format = tk.Label(root, text='格式:')
# 放置标签,并设置位置
label_format.grid(column=4, row=3, pady=10, padx=10)
# 设置输入框
entry_format = tk.Entry(root)
# 放置输入框,并设置位置
entry_format.grid(column=5, row=3, padx=10, pady=10)
# 设置按钮,点击按钮调用批量图片格式转换gui函数
button_convert = tk.Button(root, text='运行', command=convert_images_gui)
# 放置按钮,并设置位置
button_convert.grid(column=5, row=4, columnspan=2,padx=40, pady=10,sticky='ew'  )
# 启动GUI
root.mainloop()

效果

加了个图片背景图,个人感觉比原来单调的颜色好多了。

打包成.exe可执行文件

需要安装python第三方库pyinstaller

代码语言:bash
复制
pip install pyinstaller

在文件所在目录的终端输入下面的命令,就可以把把刚刚的GUI界面打包成一个.exe可执行文件。

代码语言:bash
复制
pyinsataller filename

filename是要打包的源文件的名称

比如我要打包我写的图片批量命名的脚本打包成.exe可执行文件,可以在终端使用下面的命令:

代码语言:bash
复制
pyinstaller imageScript2.py  

共勉

努力工作是为了更好的生活!

博客

  • 本人是一个渗透爱好者,不时会在微信公众号(laity的渗透测试之路)更新一些实战渗透的实战案例,感兴趣的同学可以关注一下,大家一起进步。
  • 之前在公众号发布了一个kali破解WiFi的文章,感兴趣的同学可以去看一下,在b站(up主:laity1717)也发布了相应的教学视频

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 导航
    • pillow库的使用篇
    • 图片脚本篇
    • Tkiner库的使用篇
    • 批量处理图片尺寸脚本源码
      • 效果
    • GUI界面源码
      • 效果
    • 打包成.exe可执行文件
  • 共勉
  • 博客
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档