【Python】一个简单的小程序,实现批量修改图片格式(附完整代码及程序)

news2024/12/26 22:37:21

程序下载地址:链接:https://pan.baidu.com/s/1ser7iEMRS54syvwl1cck1Q?pwd=jr66 
提取码:jr66

一、完整代码

如果想要测试代码,记得在使用前先保证已经安装了Python的PIL模块

import os
from tkinter import Tk, Button, messagebox
from PIL import Image

# 检查并创建文件夹
def check_and_create_folders():
    if not os.path.exists('Old_Img'):
        os.makedirs('Old_Img')
    if not os.path.exists('New_Img'):
        os.makedirs('New_Img')

# 清空New_Img文件夹
def clear_new_img_folder():
    file_list = os.listdir('New_Img')
    for file_name in file_list:
        file_path = os.path.join('New_Img', file_name)
        if os.path.isfile(file_path):
            os.remove(file_path)

# 图片格式转换函数
def convert_images(image_format):
    old_img_folder = 'Old_Img'
    new_img_folder = 'New_Img'

    # 获取Old_Img文件夹中的图片文件列表
    file_list = os.listdir(old_img_folder)

    for file_name in file_list:
        file_path = os.path.join(old_img_folder, file_name)
        if os.path.isfile(file_path):
            # 打开图片
            image = Image.open(file_path)

            # 构建新的文件名
            new_file_name = os.path.splitext(file_name)[0] + '.' + image_format

            # 保存转换后的图片
            new_file_path = os.path.join(new_img_folder, new_file_name)
            image.save(new_file_path, format=image_format)

    messagebox.showinfo("提示", "转换完成!")

# 创建主窗口
def create_main_window():
    root = Tk()
    root.title("请选择要转换的格式")
    root.geometry('300x200')

    # 清空New_Img文件夹并转换图片
    def convert_btn_click(image_format):
        clear_new_img_folder()
        convert_images(image_format)

    # 创建按钮并绑定事件
    btn_formats = ['jpg', 'png', 'gif']
    for i, format in enumerate(btn_formats):
        btn = Button(root, text=format, command=lambda f=format: convert_btn_click(f))
        btn.place(x=20 + 100 * i, y=80)

    root.mainloop()

# 主程序入口
if __name__ == '__main__':
    check_and_create_folders()
    create_main_window()

二、使用教程

步骤 1:准备图片文件:将你要转换的图片文件复制或剪切到程序所在目录下的"Old_Img"文件夹中。请确保只包含图片文件在该文件夹中,其他文件将被忽略。

步骤 2:运行程序:此时程序会自动创建一个名为“New_Img”的文件用于存储转换后的图片

 

步骤 3:选择要转换的图片格式:程序运行后,会弹出一个窗口,窗口标题为"请选择要转换的格式"。窗口内显示了几个按钮,分别对应常见的图片格式(jpg、png和gif)。

步骤 4:转换图片格式:点击相应的按钮,即可开始将"Old_Img"文件夹中的图片转换为所选格式。在转换过程中,程序会清空"New_Img"文件夹,并将转换后的图片保存到"New_Img"文件夹中。

步骤 5:查看转换结果:转换完成后,程序会弹出一个提示框,提示用户转换完成。你可以打开"New_Img"文件夹,查看转换后的图片文件。

 

注意事项:

  • 请确保"Old_Img"文件夹中只包含你想要转换的图片文件,其他文件将被忽略。
  • 请注意转换后的图片文件可能会覆盖同名的文件,因此在转换之前建议备份原始图片。
  • 该程序目前只支持常见的图片格式转换,如需转换其他格式,请对代码进行相应修改。

三、实现思路

这段代码实现了一个简单的图片格式转换程序,使用了tkinter库创建了一个图形界面窗口,让用户可以选择要将图片转换成的格式。

  1. check_and_create_folders()函数用于检查并创建名为"Old_Img"和"New_Img"的文件夹。如果这两个文件夹不存在,就使用os.makedirs()函数创建它们。

  2. clear_new_img_folder()函数用于清空"New_Img"文件夹。它遍历"New_Img"文件夹中的文件列表,并使用os.remove()函数删除每个文件。

  3. convert_images(image_format)函数用于将"Old_Img"文件夹中的图片转换为指定格式。它首先获取"Old_Img"文件夹中的图片文件列表,然后对每个文件进行以下操作:

    • 打开图片文件并创建一个Image对象。
    • 根据指定的格式构建新的文件名。
    • 使用image.save()方法将转换后的图片保存到"New_Img"文件夹中,指定保存格式为指定的格式。
  4. create_main_window()函数用于创建主窗口。它使用Tk()函数创建一个名为root的窗口对象,并设置窗口的标题为"请选择要转换的格式",大小为300x200像素。

  5. convert_btn_click(image_format)函数是按钮点击事件的处理函数。当用户点击某个按钮时,该函数会被调用。它首先调用clear_new_img_folder()函数清空"New_Img"文件夹,然后调用convert_images(image_format)函数将"Old_Img"文件夹中的图片转换为指定格式。

  6. create_main_window()函数中,使用Button()函数创建了三个按钮,分别对应三种常见的图片格式("jpg"、"png"和"gif")。每个按钮的文本使用对应的格式名,点击按钮时会调用convert_btn_click()函数并传递对应的格式名作为参数。

  7. 最后,在主程序入口if __name__ == '__main__':中,首先调用check_and_create_folders()函数创建文件夹,然后调用create_main_window()函数创建主窗口。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/581692.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库基础——7.多表查询

这篇文章来讲一下数据库中的多表查询 目录 1. 一个案例引发的多表连接 1.1 案例说明 1.2 笛卡尔积(或交叉连接)的理解 1.3 案例分析与问题解决 2. 多表查询分类讲解 2.1 等值连接 vs 非等值连接 2.1.1等值连接 2.1.2 非等值连接 2.2 自连接 vs…

chatgpt赋能python:PythonDemo:快速了解Python编程语言

Python Demo:快速了解Python编程语言 如果你是一个对编程感兴趣的人,或者正在学习编程,那么你一定听说过Python这个编程语言。Python是一个非常易学易用的语言,同时也是非常流行的语言之一。Python具有众多的库和框架&#xff0c…

从RE到RSE:聊聊无线产品EMC认证测试中的辐射项(下)

当无线产品开启个人通信时代之际,EUT这个载体变了,辐射发射测试标准要不要变?怎么变? 回答这个问题的不再是ANSI和CISPR,而是联合国下属机构国际电信联盟无线电通信部门(ITU-R)以及著名的移动通…

Django学习笔记002之resetfull应用

学习目标: 学习resetfull接口 掌握Django web基础设施 学习内容: 1.学习resetfull接口 简介 人工智能解释: 应用场景 以下是人工智能使用Django框架实现的restfull接口代码: #views.py from django.http import JsonRespon…

maven环境变量配置zsh: command not found: mvn。

在输入命令vim ~/.zshrc的时候出现下面的报错: 解决办法 第一步输入下面的命令vim -r 文件名(文件名也就是第二行双引号里面的所有字母字符) 第二步输入下面的命令rm -f xx.swp 在配置好maven的环境变量但是在输入mvn -v的时候会报错 zsh:…

浅读《简约之美-软件设计之道》

浅读《简约之美-软件设计之道》 大家好,我是Lampard~ 这个周末阅读了一本程序设计相关的书籍《简约之美-软件设计之道》,它原著是《The Science of Software Development》,由余晟大大翻译。 这本书只有数十页,和它的命名一样追求…

Linux---GUN binutils

文章目录 一、GUN binutis概述二、工具集详细说明nm指令使用size指令使用objdump指令使用addr2line指令使用readelf指令使用strip指令使用 一、GUN binutis概述 什么是GUN binutis?它是一个二进制工具集,默认情况下所有 Linux 发行版中都会安装这些二进制工具。实际…

chatgpt赋能python:Python中的Cumsum()函数

Python中的Cumsum()函数 Python是数据科学家和工程师喜欢的一种高级脚本语言。它为许多数据科学的任务提供了大量的分析和可视化工具。 在Python中,Cumulative Sum或cumsum()函数是一个非常有用的函数之一。 它可以基于给定的轴计算数组元素的累积和。 什么是cums…

【牛客算法BM2】 链表内指定区间反转

​ 你好,欢迎来到我的博客!作为一名程序员,我经常刷LeetCode题目来提升自己的编程能力。在我的博客里,我会分享一些我自己做过的题目和解题思路,希望能够帮助到大家。今天,我想和大家分享一道挑战性较高的题…

chatgpt赋能python:Python编程技巧:没有换行输入三个数的方法

Python编程技巧:没有换行输入三个数的方法 在Python编程过程中,我们经常需要从用户输入一些数据。但是,当我们需要从用户输入多个数值时,我们往往会遇到一些问题,比如输入回车符会造成程序无法正常执行等。那么&#…

被比尔盖茨选中的GPT技术,是如何演进,又革谁的命?

作者 | 智商掉了一地、Python 如果机器能够以类似于人类的方式进行理解和沟通,那会是怎样的情况?这一直是学界中备受关注的话题,而由于近些年来在自然语言处理的一系列突破,我们可能比以往任何时候都更接近实现这个目标。在这个突…

C语言基础:翁恺笔记

英尺英寸换算米案例&#xff1a; #include <stdio.h>int main() {int inch0,foot0;printf("请输入身高的英尺和英寸\n");scanf("%d %d",&inch,&foot);printf("身高是%f米",(inchfoot/12)*0.3048);return 0; } 总结&#xff1a;…

mac的maven的环境变量配置

首先下载maven文件 下载安装 下载地址&#xff1a; Maven – Download Apache Maven 2、配置环境变量 打开mac终端&#xff0c;不做任何操作直接输入命令&#xff1a;vim ~/.zshrc 打开.zshrc之后&#xff0c;按下i键&#xff0c;进行配置如下&#xff1a; #maven export M…

chatgpt赋能python:Python下载与运行指南-让Python脚本更容易使用

Python下载与运行指南 - 让Python脚本更容易使用 Python已经成为世界上最流行的编程语言之一。Python具有简单易用的特点&#xff0c;几乎可以开始创建任何类型的应用程序或脚本。如果你是一名新手或是一名经验丰富的开发者&#xff0c;Python都是一款优秀的编程语言。 本篇文…

chatgpt赋能python:Python中KW的介绍:了解Python关键字

Python中KW的介绍&#xff1a;了解Python关键字 在Python语言中&#xff0c;KW是一个非常重要的概念。KW是Python中的关键字&#xff0c;也就是非常重要的语法元素。在程序中使用正确的KW可以帮助我们避免一些常见的错误&#xff0c;从而提高代码的可读性和运行效率。本文将对…

list常见接口的使用(基于c++标准库中的STL)

前言 list是重要的容器了解它的常见接口以及使用是很有必要的&#xff0c;为什么有了vector还要有list呢&#xff1f;因为vector存在一些缺陷&#xff0c;比如&#xff1a;容量满了要扩容&#xff0c;扩容是要付出代价的&#xff08;性能的损失&#xff09;&#xff0c;存在空…

【Leetcode -724.寻找数组的中心下标 -728.自除数】

Leetcode Leetcode -724.寻找数组的中心下标Leetcode -728.自除数 Leetcode -724.寻找数组的中心下标 题目&#xff1a;给你一个整数数组 nums &#xff0c;请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标&#xff0c;其左侧所有元素相加的和等于右侧所有元素相加的…

【网络编程】一文详解http协议(超文本传输协议)

目录 一、http协议 1、http协议的介绍 2、URL的组成 3、urlencode和urldecode 二、http的请求方法、状态码及状态码描述、常见的响应报头 1、http请求方法 2、http状态码及状态码描述 3、http常见的响应报头 三、http协议客户端和服务器的通信过程 1、如何保证请求和…

驱动LSM6DS3TR-C实现高效运动检测与数据采集(2)----配置滤波器

工作模式 在LSM6DS3TR-C中&#xff0c;加速度计和陀螺仪可以独立地开启/关闭&#xff0c;并且可以拥有不同的ODR和功耗模式。 LSM6DS3TR-C有三种可用的操作模式&#xff1a; ● 仅加速度计活动&#xff0c;陀螺仪处于断电状态 ● 仅陀螺仪活动&#xff0c;加速度计处于断电状态…

chatgpt赋能python:Python中0.2+0.1的问题解决方案

Python中0.20.1的问题解决方案 在Python中&#xff0c;0.20.1的结果并非等于0.3。这是由于计算机在二进制中存储小数时会存在精度问题导致的。而这个问题在日常编程中可能并不会带来太大的影响&#xff0c;但在需要精确计算的场景下&#xff0c;如金融或科学领域&#xff0c;就…