-
目前只用于实现.tif格式图像转 .jpg 和 .png ;
-
源文件夹 tif_files 用于放置 .tif 格式的图像;jpg_files , png_files 用于放置目标图像;
-
转换前将目标文件夹清空;
-
转换后,在界面显示信息:成功转换的图像;保证源文件夹内有.tif格式的文件;打印转换过程中可能会出现的程序错误信息;
-
该程序会在完成所有转换之后,才在界面打印转换结果的信息!
"""
@file: GUI.py
@brief: Image Transforms
@copyright: © 2024 Jarine. All rights reserved.
"""
import PySimpleGUI as sg
from PIL import Image
import os
################## GUI Setting ################
layout = [[]]
layout.append([sg.Text(" "*130)])
layout.append([sg.Text("选择您想进行的转换类型:",font = (20)),
sg.Combo(values=("tif - jpg","tif - png"),default_value="tif - jpg",readonly=True,font = (20),k="-COMBO-"), #k参数即key,它表示当前控件Combo目前的值;是该窗口元素的身份
sg.Text(" "*20),
sg.Button("确认转换",button_color="pink")
])
layout.append([sg.Text(" "*130)])
layout.append([sg.Text("> 请在对应的文件夹内放入所需转换的.tif文件!",font = (20),text_color="yellow")])
layout.append([sg.Text(" "*130)])
layout.append([sg.Text("转换结果:", font=(20)), sg.Text("", key="-trn_bef-", font=(30), text_color="yellow"),
sg.Text(" " * 120)
])
layout.append(
[
sg.Multiline(key='-trn_aft_text-', font=('宋体', 15), size=(80, 20), autoscroll=True)])
window = sg.Window('图像格式转换工具',layout)
######################################################
def clear_folder(folder_path): #用于清空目标文件夹的函数
files = os.listdir(folder_path)
for file_name in files:
file_path = os.path.join(folder_path,file_name)
os.remove(file_path)
def batch_tif_to_trg(src_folder, trg_folder):
# 如果目标文件夹不存在,则创建
if not os.path.exists(trg_folder):
os.makedirs(trg_folder)
else:
clear_folder(trg_folder)
# 获取所有TIF文件的路径
if src_folder == "tif_files":
tif_files = [f for f in os.listdir(src_folder) if f.endswith('.tif') or f.endswith('.tiff') ]
str1,str2,str3,str4,res1,res2,res3,res4 = "",'','','','','','',''
# 遍历每个TIF文件,并转换为JPG
for tif_file in tif_files:
try:
tif_path = os.path.join(src_folder, tif_file)
if trg_folder == "jpg_files":
jpg_path = os.path.join(trg_folder, os.path.splitext(tif_file)[0] + '.jpg')
with Image.open(tif_path) as img:
img.convert('RGB').save(jpg_path)
elif trg_folder == "png_files":
png_path = os.path.join(trg_folder, os.path.splitext(tif_file)[0] + '.png')
with Image.open(tif_path) as img:
img.convert('RGB').save(png_path)
str1 = "转换 "+ str(tif_file) + "成功!" + '\n'
res1 = res1 + str1
except Exception as e:
str2 = "转换失败:" + str({e}) + '\n'
res2 = res2 + str2
if src_folder == "tif_files" and tif_files == []:
str3 = "tif_files路径下没有tif格式的文件!"+ '\n'
res3 = res3 + str3
else:
str4 = "批量转换完成!"+ '\n'
res4 = res4 + str4
res = res1 + res2 + res3 + res4
return res
############################################################
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
elif event == "确认转换" :
cur_type = window["-COMBO-"].get()
if cur_type == "tif - jpg":
src_folder = "tif_files" #文件夹路径
trg_folder = "jpg_files" # 文件夹路径
result = batch_tif_to_trg(src_folder, trg_folder)
elif cur_type == "tif - png":
src_folder = "tif_files" # 文件夹路径
trg_folder = "png_files" # 文件夹路径
result = batch_tif_to_trg(src_folder, trg_folder)
window["-trn_aft_text-"].Update(result)
- 运行结果
-