找到
1
篇与
Pillow
相关的结果
-
Python使用Pillow批量将tif/tiff图片转换为jpg/png 在日常图像处理工作中,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交互流程图片 最后就能再输出文件夹里获得自己想要的新格式图片了。