Python使用Pillow批量将tif/tiff图片转换为jpg/png

Python使用Pillow批量将tif/tiff图片转换为jpg/png

admin
7月20日发布
温馨提示:
本文最后更新于2025年07月25日,已超过85天没有更新,若内容或图片失效,请留言反馈。

在日常图像处理工作中,TIFF格式因其高质量和支持多页等特性被广泛使用,但也存在文件体积大、兼容性差等问题。本文将介绍如何利用Python的Pillow库批量将TIFF图像转换为更通用的JPG或PNG格式,并提供带图形界面的转换工具。

为什么需要转换TIFF格式?

因为实在太大了,一张照片就占了十几MB。我一共有好几千张。

TIFF格式图片

此外,我还想变成灰度图。对于这样批量的任务,使用那些网页版本的转换器应该是不行的,不得不使用一个批量的脚本。

准备工作

其实主要使用了两个核心库,一个是pillow,一个是tkinter,tkinter是python的内置库。安装pillow即可:

pip install Pillow -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

完整转换代码

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

def convert_tiff_to_image(input_folder, output_folder, output_format, convert_to_gray):
    """批量转换TIFF文件为指定格式,可选择灰度转换"""
    tiff_extensions = ('.tif', '.tiff')
    
    # 收集所有TIFF文件
    tiff_files = [
        f for f in os.listdir(input_folder)
        if os.path.splitext(f)[1].lower() in tiff_extensions
    ]
    
    if not tiff_files:
        messagebox.showwarning("警告", f"在目录中未找到TIFF文件:\n{input_folder}")
        return False
    
    # 确保输出目录存在
    os.makedirs(output_folder, exist_ok=True)
    
    converted_count = 0
    for filename in tiff_files:
        input_path = os.path.join(input_folder, filename)
        output_name = os.path.splitext(filename)[0] + f'.{output_format}'
        output_path = os.path.join(output_folder, output_name)
        
        try:
            with Image.open(input_path) as img:
                # 转换为灰度(如果需要)
                if convert_to_gray:
                    img = img.convert('L')
                # 保存为指定格式
                img.save(output_path)
                converted_count += 1
        except Exception as e:
            print(f"转换失败: {filename} - {str(e)}")
    
    return converted_count

def main():
    """主函数:获取用户输入并执行转换"""
    root = tk.Tk()
    root.withdraw()
    
    # 设置输入文件夹
    input_folder = filedialog.askdirectory(title="选择TIFF文件所在文件夹")
    if not input_folder:
        return
    
    # 设置输出文件夹
    output_folder = filedialog.askdirectory(title="选择输出文件夹")
    if not output_folder:
        return
    
    # 选择输出格式
    output_format = tk.simpledialog.askstring(
        "输出格式", 
        "请输入输出格式 (jpg 或 png):", 
        initialvalue="png"
    )
    if not output_format or output_format.lower() not in ('jpg', 'png'):
        messagebox.showerror("错误", "输出格式必须是 'jpg' 或 'png'")
        return
    output_format = output_format.lower()
    
    # 选择是否转为灰度
    convert_to_gray = messagebox.askyesno("灰度转换", "是否转换为灰度图像? (是/否)")
    
    # 执行转换
    converted_count = convert_tiff_to_image(
        input_folder, output_folder, output_format, convert_to_gray
    )
    
    if converted_count > 0:
        messagebox.showinfo(
            "完成", 
            f"成功转换 {converted_count} 个文件!\n输出目录: {output_folder}"
        )
    else:
        messagebox.showwarning("无文件转换", "没有文件被转换")

if __name__ == "__main__":
    main()

GUI交互流程

  • 第一步:选择包含TIFF的源文件夹
  • 第二步:选择输出目录
  • 第三步:选择输出格式(JPG/PNG)
  • 第四步:选择是否转为灰度图

GUI交互流程

最后就能再输出文件夹里获得自己想要的新格式图片了。

© 版权声明
THE END
喜欢就支持一下吧
点赞 0 分享 赞赏
评论 抢沙发
上传图片
OωO
取消