Python小工具 - BMP转TIFF

Tim
2025-03-28
点 赞
0
热 度
34
评 论
0

文章摘要

智阅GPT

使用 VSCode + Copilot 生成的一个小工具,记录下来帮助自己理解 Python第一个 Python 程序

环境

Pillow

图像处理库,替代 PIL 兼容 Python3 并持续维护。

作用

  • 图像处理:支持打开、编辑、保存多种图像格式(如 JPEG、PNG、GIF、BMP 等)。

  • 基础操作:裁剪、旋转、缩放、滤镜、调色、绘制图形等。

  • 高级功能:文字渲染、图像合成、通道操作、直方图分析等。

安装

pip install pillow

PyInstaller

Python 打包工具,可以将程序打包成独立可执行文件(.exe .appLinux 二进制文件)。让 Python 程序在没有安装 Python 环境的电脑上直接运行。

安装

pip install pyinstaller

执行

进入脚本所在目录后,在终端或命令提示符中运行命令:

pyinstaller --onefile --windowed Untitled-1.py

由于我是通过 Microsoft Store 安装的 Python ,所以使用 python -m 来运行模块

python -m PyInstaller --onefile --windowed Untitled-1.py

知识点

f-string

一种字符串格式化语法。它允许在字符串中直接嵌入变量或表达式。

 window.geometry(f"{width}x{height}+{x}+{y}")

除法取整运算

// 对两个数进行除法运算后,向下取整

布局管理

  • pack()按顺序自动排列(简单但灵活性低)。

    #pady 垂直方向外边距 
    #padx 水平方向外边距 
    #fill填充父容器剩余控件,可选tk.X tk.Y tk.BOTH 
    #expand:允许控件扩展以占用额外的空间(当窗口变大时,文本框会随之拉伸)
    
    output_text.pack(pady=10,padx=10, fill=tk.BOTH, expand=True) 
  • grid()网格布局(类似表格)。

  • place()绝对坐标定位(精确但不灵活)。

Demo

将手动选择的文件夹(包括子文件夹)下所有 BMP 文件另存为 TIFF

import tkinter as tk
from tkinter import filedialog, messagebox
from PIL import Image
import os
import threading

def center_window(window, width, height):
    # 获取屏幕尺寸
    screen_width = window.winfo_screenwidth()
    screen_height = window.winfo_screenheight()
    # 计算居中坐标  // 表示向下取整运算
    x = (screen_width - width) // 2
    y = (screen_height - height) // 2    
    # 设置窗口位置(格式:"宽度x高度+X偏移+Y偏移")
    window.geometry(f"{width}x{height}+{x}+{y}")

def convert_bmp_to_tif_in_folder():    
    # 清空输出提示
    output_text.delete(1.0, tk.END)
    
    # 打开文件夹选择对话框
    folder_path = filedialog.askdirectory(title="选择包含BMP文件的文件夹")
    if not folder_path:
        return  # 用户取消选择
 
    def convert():
        try:
            # 遍历文件夹及其子文件夹
            for root, _, files in os.walk(folder_path):
                for file in files:
                    if file.lower().endswith(".bmp"):
                        bmp_path = os.path.join(root, file)
                        tif_path = os.path.splitext(bmp_path)[0] + ".tif"
                        
                        # 转换并保存为TIFF格式
                        with Image.open(bmp_path) as img:
                            img.save(tif_path, format="TIFF")
                        
                        # 在界面输出提示
                        output_text.insert(tk.END, f"已转换文件: {bmp_path}\n")
                        output_text.see(tk.END)  # 滚动到最新提示
            messagebox.showinfo("成功", "所有BMP文件已成功转换为TIFF!")
        except Exception as e:
            messagebox.showerror("错误", f"文件转换失败:{e}")

    # 使用线程避免阻塞 UI
    threading.Thread(target=convert).start()

# 创建主窗口
root = tk.Tk()
root.title("BMP转TIFF工具")
# 设置窗口大小(可选)
center_window(root, 500, 600)  # 设置窗口 


眼睛记得的光影,心记得的温度,它们不会消散,只是藏进岁月的褶皱里。某一天,风一吹,它们又鲜活如初...

Tim

infj 提倡者

站长

具有版权性

请您在转载、复制时注明本文 作者、链接及内容来源信息。 若涉及转载第三方内容,还需一同注明。

具有时效性

目录

欢迎来到Tim的博客,为您导航全站动态

45 文章数
4 分类数
3 评论数
48标签数

热门文章

D&F - Frida

2024-08-04

1716
D&F开服

2024-07-27

761
D&F - DP插件

2024-08-04

355

访问统计