import tkinter as tk
from threading import Semaphore, Thread
from tkinter import filedialog, messagebox, Scrollbar, ttk
from subprocess import Popen, PIPE, STDOUT
from re import search
from PIL import Image, ImageTk
from os import path, remove, scandir
class GUI(object):
def __init__(self):
self.root = tk.Tk()
self.img_app = ImageApp()
self.infile_path = None
self.outfile_path = None
self.infile_path_entry = None
self.output_folder_entry = None
self.img_label1 = None
self.img_label2 = None
self.open_button1 = None
self.open_button2 = None
self.original_frame = None
self.dealt_frame = None
self.command_frame = None
self.output_info_frame = None
self.dealt_mode_combobox = None
self.module_combobox = None
self.scale_combobox = None
self.extension_combobox = None
self.output_text = None
self.set_all_element()
def set_all_element(self):
# 布置所有控件
self.set_root_win()
self.set_frame()
self.set_info_label()
self.set_open_button()
self.set_entry_and_output_text()
self.show_default_img()
self.set_combobox()
self.root.mainloop()
def set_root_win(self):
self.root.resizable(False, False)
self.root.title("超分辨率处理GUI")
self.root.geometry('1080x650+300+100')
def set_frame(self):
self.original_frame = tk.Frame(self.root, borderwidth=2, relief='solid',
highlightbackground='gray', highlightthickness=2)
self.dealt_frame = tk.Frame(self.root, borderwidth=2, relief='solid',
highlightbackground='gray', highlightthickness=2)
self.command_frame = tk.Frame(self.root, borderwidth=2, relief='solid')
self.output_info_frame = tk.Frame(self.root, borderwidth=2, relief='solid')
self.command_frame.place(x=0, y=322, height=328, width=540)
self.output_info_frame.place(x=540, y=322, height=328, width=540)
def set_info_label(self):
label1 = tk.Label(self.root, text='原图', font=('宋体', 17))
label2 = tk.Label(self.root, text='处理后图片', font=('宋体', 17))
label3 = tk.Label(self.root, text='图片处理模式:', font=('宋体', 16))
label4 = tk.Label(self.root, text='图片输入路径:', font=('宋体', 16))
label5 = tk.Label(self.root, text='图片输出路径:', font=('宋体', 16))
label6 = tk.Label(self.root, text='参数模型路径:', font=('宋体', 16))
label7 = tk.Label(self.root, text='图片放大尺寸:', font=('宋体', 16))
label8 = tk.Label(self.root, text='输出文件格式:', font=('宋体', 16))
label1.place(x=210, y=293)
label2.place(x=780, y=293)
label3.place(x=25, y=340)
label4.place(x=25, y=390)
label5.place(x=25, y=440)
label6.place(x=25, y=490)
label7.place(x=25, y=540)
label8.place(x=240, y=540)
def set_open_button(self):
self.open_button1 = tk.Button(self.root, text="预览图片", bg="wheat", font=('宋体', 13),
command=lambda: self.img_app.open_img(self.infile_path))
self.open_button2 = tk.Button(self.root, text="预览图片", bg="wheat", font=('宋体', 13),
command=lambda: self.img_app.open_img(self.outfile_path))
open_folder1 = tk.Button(self.root, text="打开文件夹", bg="wheat", font=('宋体', 13),
command=self.img_app.open_folder)
open_folder2 = tk.Button(self.root, text='选择文件夹', bg="wheat",
command=lambda: self.choose_folder(1))
open_file = tk.Button(self.root, text='打开文件', bg='wheat', font=('宋体', 12),
command=self.check_open)
execute_btn = tk.Button(self.root, text='开始图片处理', font=('宋体', 16), bg='peachpuff',
command=self.execute_entry)
self.open_button1.place(x=378, y=293, width=80)
self.open_button2.place(x=570, y=293)
open_folder1.place(x=665, y=293)
open_folder2.place(x=378, y=440, width=75)
open_file.place(x=378, y=390, height=30)
execute_btn.place(x=200, y=590)
def set_entry_and_output_text(self):
self.infile_path_entry = tk.Entry(self.root, width=30)
self.infile_path_entry.place(x=165, y=390, height=30)
self.output_folder_entry = tk.Entry(self.root, width=30)
self.output_folder_entry.place(x=165, y=440, height=30)
output_scrollbar = Scrollbar(self.root)
output_scrollbar.place(x=1060, y=325, height=320)
self.output_text = tk.Text(self.root, font=('宋体', 18))
self.output_text.place(x=542, y=323, width=518, height=323) # width=535
self.output_text.config(yscrollcommand=output_scrollbar.set)
output_scrollbar.config(command=self.output_text.yview)
def set_combobox(self):
self.dealt_mode_combobox = ttk.Combobox(self.root, values=['单张图片处理', '批量图片处理'], font=('宋体', 14))
self.dealt_mode_combobox.insert(tk.END, '单张图片处理')
self.dealt_mode_combobox.config(state='readonly')
self.module_combobox = ttk.Combobox(self.root, values=[
r"models/realesr-animevideov3-x2.bin",
r"models/realesr-animevideov3-x3.bin",
r"models/realesr-animevideov3-x4.bin",
r"models/realesrgan-x4plus.bin",
r"models/realesrgan-x4plus-anime.bin"
])
self.module_combobox.insert(tk.END, r"models/realesrgan-x4plus-anime.bin")
self.module_combobox.config(state='readonly')
self.scale_combobox = ttk.Combobox(self.root, values=['2', '3', '4'])
self.scale_combobox.insert(tk.END, '4')
self.scale_combobox.config(state='readonly')
self.extension_combobox = ttk.Combobox(self.root, values=['.jpg', '.png', '.webp'])
self.extension_combobox.insert(tk.END, '.png')
self.extension_combobox.config(state='readonly')
self.dealt_mode_combobox.place(x=165, y=340, width=160, height=30)
self.module_combobox.place(x=165, y=490, width=285, height=30)
self.scale_combobox.place(x=165, y=540, width=60, height=30)
self.extension_combobox.place(x=380, y=540, width=70, height=30)
def choose_img(self):
choose_img = filedialog.askopenfilename(title='选择图片', initialdir=self.infile_path)
if not choose_img:
return
elif not search(r'\.(jpg|png|jpeg|webp)$', choose_img, 2):
messagebox.showwarning('警告', '文件加载失败!\n只允许选择图片文件\n(png/jpg/jpeg/webp)!')
return
elif path.getsize(choose_img) > 15728640:
messagebox.showerror('错误', '图片过大(>15MB),为避免最终\n生成的图片过大,拒绝加载!!')
return
self.infile_path = choose_img
self.infile_path_entry.insert(tk.END, choose_img)
self.img_app.change_img(self.img_label1, choose_img)
def choose_folder(self, flag):
folder_selected = filedialog.askdirectory(initialdir=self.infile_path)
if not folder_selected:
return
if flag == 1:
self.img_app.folder_path = folder_selected
self.output_folder_entry.delete(0, 'end')
self.output_folder_entry.insert(0, folder_selected)
if self.dealt_mode_combobox.get() == '单张图片处理':
original_file_name = path.basename(self.infile_path)
self.outfile_path = path.join(folder_
没有合适的资源?快使用搜索试试~ 我知道了~
不建议下载,因为这个文件只是为了供我个人备份!!!!
共21个文件
param:5个
bin:5个
lnk:2个
需积分: 0 0 下载量 92 浏览量
2024-04-04
22:31:01
上传
评论
收藏 80.19MB ZIP 举报
温馨提示
超分辨率图像处理,仅是对开源项目:https://github.com/xinntao/Real-ESRGAN/的封装
资源推荐
资源详情
资源评论
收起资源包目录
超分辨率.zip (21个子文件)
超分辨率
README_windows.md 2KB
超分辨率.lnk 689B
onepiece_demo.mp4 579KB
realesrgan-ncnn-vulkan.lnk 771B
main
Load_picture
OIP-C.png 143KB
Default.jpg 4KB
vcomp140d.dll 203KB
realesrgan-ncnn-vulkan.exe 5.88MB
vcomp140.dll 178KB
超分辨率.py 17KB
models
realesr-animevideov3-x3.param 3KB
realesrgan-x4plus.param 113KB
realesr-animevideov3-x4.param 3KB
realesr-animevideov3-x2.param 3KB
realesrgan-x4plus-anime.bin 8.53MB
realesr-animevideov3-x4.bin 1.19MB
realesr-animevideov3-x3.bin 1.19MB
realesrgan-x4plus.bin 31.88MB
realesr-animevideov3-x2.bin 1.19MB
realesrgan-x4plus-anime.param 30KB
超分辨率.exe 37.08MB
共 21 条
- 1
资源评论
Jo乔戈里
- 粉丝: 88
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功