功能分析
功能分析 | |
1 | 图片浏览 |
2 | 图像缩放 |
3 | 图像旋转 |
4 | 切换浏览 |
5 | 拖拽查看 |
设计思路
设计思路概要 | |
图像处理 | PILLOW库实现 |
UI界面 | 自带tkinter库来实现 |
具体功能实现 | |
打开图像 即获取图像路径信息 | tkinter的filedialog、os库等 |
图像显示 | tkinter的Label控件 |
缩放 | PILLOW的resize |
旋转 | PILLOW的rotate |
另存为 | PILLOW的save |
切换浏览 | 更新路径即可 |
from tkinter import Tk, Label, Button, Frame, Menu
from tkinter.filedialog import askopenfilename, asksaveasfilename
from os import listdir, mkdir, remove
from os.path import split as path_split
from os.path import exists
from PIL.Image import open as imread
from PIL.ImageTk import PhotoImage
from tkinter.messagebox import showinfo, askyesno
from base64 import b64decode
运行逻辑:
1. 初始界面
- 完成初始图像信息获取
- 同步获取该路径下所有可能的图像的信息,供之后切换浏览使用
2. 浏览界面
- 浏览、缩放、切换等基础功能及图标铺排
- 菜单栏提供:打开、另存为、删除等功能
- 部分功能加入->鼠标右键菜单
- 部分功能关联键盘或鼠标
代码实现
from tkinter import Tk, Label, Button, Frame, Menu
from tkinter.filedialog import askopenfilename, asksaveasfilename
from os import listdir, mkdir, remove
from os.path import split as path_split
from os.path import exists
from PIL.Image import open as imread
from PIL.ImageTk import PhotoImage
from tkinter.messagebox import showinfo, askyesno
from base64 import b64decode
class one():
def __init__(self):
self.root = Tk()
self.root.geometry('900x740+100+40')
self.root.title('图片查看器')
self.choose = Button(self.root,
text='选择要浏览的图像',
font=30,
relief='groove',
bg='#e6e6e6', bd=8,
command=self.openfile_tomwindow,
)
self.choose.pack(expand='yes', anchor='center', )
self.root.mainloop()
def openfile_tomwindow(self):
pass
按钮的openfile_tomwindow() 回调函数。
- (塑料英语 open file to main window.打开文件+跳转主窗口)
- 根据之前分析,还应该完成当前路径下所有图像路径的采集;
- 而且还要搭建出“图片浏览的器”的使用框架。也就是主界面的搭建。
def openfile_tomwindow(self):
img_path = askopenfilename(
title='请选择图片文件',
# 筛选常见图片文件
filetypes=[('图片', '.jpg .png .gif .bmp .jpeg')],
)
if img_path and img_path.endswith(('.jpg', '.png', '.gif', '.jpeg', '.bmp')):
self.path = img_path
self.dir = path_split(self.path)[0]
self.get_imgs()
self.choose.destroy()
self.main_window()
这里打了一个太极。先调用self.get_imgs() 函数获取了路径下的图像,而后再调用self.main_window() 跳转到主窗口。
- get_imgs() 需要依赖 self.dir 参数。即目标文件路径
# 获取图片路径后,制作图片路径集,存于self.imgs 中
def get_imgs(self):
# 定义一个小函数,判断是否是图片
def is_pic(path):
if path.endswith(('.gif', '.jpg', '.jpeg', '.png', '.bmp')):
return True
else:
return False
files = [self.dir + f'/{name}' for name in listdir(self.dir)]
self.imgs = list(filter(is_pic, files))
self.all_imgs = len(self.imgs)
def main_window(self):
# 进入主界面之前先准备参数
self.do_params()
#----------顶部菜单栏--------
self.mnu = Menu(self.root)
filemenu = Menu(self.mnu, tearoff=0)
self.mnu.add_cascade(label='文件', menu=filemenu)
filemenu.add_command(label='打开', command=self.openfile)
filemenu.add_command(label='另存为', command=self.save_im)
filemenu.add_command(label='删除文件', command=self.del_im)
othermenu = Menu(self.mnu, tearoff=0)
self.mnu.add_cascade(label='其它', menu=othermenu)
othermenu.add_command(label='function1', command=self.function1)
othermenu.add_command(label='function2', command=self.function2)
# 放置菜单栏
self.root.config(menu=self.mnu)
# 设置窗口最小尺寸限制
self.root.minsize(900, int(self.size[1]*self.upper)+60)
# 调用show函数显示图像
self.show()
# 缩放控件布置
fram1 = Frame(self.root)
self.bgr = imread(self.pics_path[2])
self.bgr = PhotoImage(self.bgr)
bgger = Button(fram1,
image=self.bgr,
relief='flat',
command=lambda: self.chg_size(1))
bgger.grid(row=0, column=4)
for i in range(1, 10, 2):
Button(fram1, width=12, state='disabled', relief='flat').grid(row=0, column=i)
self.sml = imread(self.pics_path[3])
self.sml = PhotoImage(self.sml)
smller = Button(fram1,
image=self.sml,
relief='flat',
command=lambda: self.chg_size(0))
smller.grid(row=0, column=6)
# 逆时针旋转按键布置
self.nsz = imread(self.pics_path[4])
self.nsz = PhotoImage(self.nsz)
n_rtate = Button(fram1,
image=self.nsz,
relief='flat',
command=lambda: self.rotate_p(0))
n_rtate.grid(row=0, column=2)
# 顺时针旋转按键布置
self.ssz = imread(self.pics_path[5])
self.ssz = PhotoImage(self.ssz)
s_rtate = Button(fram1,
image=self.ssz,
relief='flat',
command=lambda: self.rotate_p(1))
s_rtate.grid(row=0, column=8)
# 切换
# 上一张 按键布置
self.pre_pic = imread(self.pics_path[6])
self.pre_pic = PhotoImage(self.pre_pic)
prev = Button(fram1,
image=self.pre_pic,
relief='flat',
command=lambda: self.turn_page(0))
prev.grid(row=0, column=0)
# 下一张 按键布置
self.next_p = imread(self.pics_path[7])
self.next_p = PhotoImage(self.next_p)
next = Button(fram1,
image=self.next_p,
relief='flat',
command=lambda: self.turn_page(1))
next.grid(row=0, column=10)
fram1.pack(in_=self.root, side='bottom',)
几点说明 | |
do_parmas()函数 | 做一些数据准备:原图像尺寸的等参数获取、转换为tkinter可用对象等 |
show() | 完成图像显示以及顺手进行一波按键绑定 |
Button控件 | image参数。可理解为按键的图标(事先准备好的) |
command参数/属性。回调函数-根据相应的按键对图像状态更新并显示。 |
选择一张图后,便可以进入如下的浏览界面。
PS: 关于图标部分。事先P好的文件。当然得做一些处理才能用【详见完整代码】
到这里,已经完成了框架的搭建。接下来要做的就是,在各个部件上加入所需要的功能函数/编写回调函数。以及细节优化。
from tkinter import Tk, Label, Button, Frame, Menu
from tkinter.filedialog import askopenfilename, asksaveasfilename
from os import listdir, mkdir, remove
from os.path import split as path_split
from os.path import exists
from PIL.Image import open as imread
from PIL.ImageTk import PhotoImage
from tkinter.messagebox import showinfo, askyesno
from base64 import b64decode
- do_params()【获取初始数据】
# 根据self.path 来更新当前图像参数
# 更换图像、打开图像时需要用到
def do_params(self):
self.source_img = imread(self.path)
self.size = self.source_img.size
# 用来判断 刷新显示前 是否改变了图像大小
self.change_size = True
# 图片相对于源图的缩放比例
self.upper = 440/self.size[1]
if (self.size[0] * self.upper) > 800:
self.upper = 800/self.size[0]
new_size = (int(self.size[0] * self.upper), int(self.size[1] * self.upper))
self.img = self.source_img.resize(new_size)
self.im = PhotoImage(self.img)
- show() 函数【按键绑定与图像显示】
# 需要依赖 self.im
def show(self, mouse_move=None):
# 更改界面标题为图像路径
self.root.title(f'{self.path}【{self.size[0]}x{self.size[1]}】')
self.lab = Label(self.root, bg='#BCBCBC')
self.lab['image'] = self.im
# 绑定鼠标滚轮,通过函数 mousewhl 来获取滚动状态(向前/向后)并判断缩放
self.lab.bind('<MouseWheel>', self.mousewhl)
# 键盘左右键绑定翻页
self.lab.bind('<Left>', lambda event: self.turn_page(0))
self.lab.bind('<Right>', lambda ev: self.turn_page(1))
self.lab.focus_set()
# 鼠标右键菜单栏
self.lab.bind('<Button-3>', self.mouse_mnu)
# self.lab.bind('<Button-2>', self.smaller)
# 鼠标拖动 按下左键拖动
#self.lab.bind('<B1-Motion>', self.pt)
# 通过按下鼠标左键并拖动来更新图像位置【拖动图像】
# 目前还没找到实现接口 {self.lab 当前(初始)放置坐标(左上角 x,y ) }
if mouse_move:
self.lab.place(x=mouse_move[0],
y=mouse_move[1])
else:
self.lab.pack(anchor='center', expand='yes', fill='both')#,fill='both'
- 翻页、旋转、缩放
# 翻页
def turn_page(self, norp):
# next or previous
index = self.imgs.index(self.path)
# 默认下一张
new_index = (index + 1) % self.all_imgs
if not norp:
if not index:
new_index = self.all_imgs - 1
else:
new_index = (index - 1) % self.all_imgs
self.path = self.imgs[new_index]
self.source_img.close()
self.img.close()
self.do_params()
self.lab.destroy()
self.show()
# 旋转
def rotate_p(self, direction):
angle = 90
# direction = 1:顺时针;否则逆时针
if direction:
angle = -90
self.source_img = self.source_img.rotate(angle, expand=True)
self.size = self.source_img.size
self.img = self.img.rotate(angle, expand=True)
self.im = PhotoImage(self.img)
self.lab.destroy()
self.show()
# 图像尺寸改变
# 需要改变、保留 self.img--旋转时需要用到
def chg_size(self, bors):
# bigger or smaller
if_chg = 0
if (self.upper > .1) and (not bors):
if_chg = 1
self.upper -= .1
elif (self.upper < 8) and bors:
if_chg = 1
self.upper += .15
if if_chg:
new_size = (int(self.size[0]*self.upper), int(self.size[1]*self.upper))
self.img = self.source_img.resize(new_size)
self.im = PhotoImage(self.img)
self.lab.destroy()
self.show()
- 鼠标右键菜单栏
# 鼠标右键菜单栏
def mouse_mnu(self, event):
self.mmnu = Menu(self.root, tearoff=0)
otherf = Menu(self.mmnu, tearoff=0)
self.mmnu.add_command(label='打开', command=self.openfile)
self.mmnu.add_command(label='另存为', command=self.save_im)
self.mmnu.add_command(label='删除文件', command=self.del_im)
self.mmnu.add_cascade(label='其它操作', menu=otherf)
otherf.add_command(label='function1', command=self.function1)
otherf.add_command(label='function2', command=self.function2)
self.mmnu.post(x=event.x_root, y=event.y_root)
- 打开、删除
# 从菜单打开图片 的回调函数
def openfile(self):
img_path = askopenfilename(
title='请选择图片文件',
# 筛选常见图片文件
filetypes=[('图片', '.jpg .png .gif .bmp .jpeg')],
)
if img_path and img_path.endswith(('.jpg', '.png', '.gif', '.jpeg', '.bmp')):
self.path = img_path
self.dir = path_split(self.path)[0]
self.get_imgs()
self.lab.destroy()
self.do_params()
self.show()
# 删除图像
def del_im(self):
if askyesno('确认', '是否彻底删除该图片?'):
out_path = self.path
self.turn_page(1)
self.imgs.pop(self.imgs.index(out_path))
self.all_imgs -= 1
remove(out_path)
showinfo('完毕', '图片已彻底删除')
完整的初始化函数:
- 这里为了打包事先把图标文件转换为2进制形式存于代码中,代码运行的时候,会先判断图标文件是否存在,若是不存在,将会将代码中的二进制图标写入内存中以供使用。【图标数据如下】
bgr_gif = "R0lGODlhMgAyAJEAAAAAAP///1paWv///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQFAAADACwAAAAAMgAyAAACyJyPqcvtD6Nsoto7s7q8Cz15Igc+42mVDMp+KnJu42uIkK16mQ7yspvwhUgLYtAo6ayQMKbJWYMOlMPUEnOtVK1F6o/7xB5xY7CD2TJLv8BpGrwut99wcVh7oOOjZopdP2d39kcnl+TEwtY2KNgk5XXTyPco6Scp5NjHqOlWCRnxObmXOXoIdRkKmmpZqbpKGncX+pYDmFhie9uTG1Ob1tn7EixKRuM6bCxbnLw5wxyJ8gyNLK2IWS23jA37uh29zRoLfg3eBVYAADs="
fst_gif = "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"
nsz_gif = "R0lGODlhMgAyAOYAAAAAAP///ygoKSUlJiwsLTg4OTQ0NURERUFBQhERECMjIioqKTg4N1NTU1JSUktLS0lJSUhISEdHR0ZGRkVFRUREREJCQkFBQUBAQD8/Pz4+Pj09PTs7Ozo6Ojk5OTg4ODc3NzY2NjU1NTQ0NDMzMzIyMjExMTAwMC8vLy4uLi0tLSwsLCsrKyoqKikpKSgoKCcnJyYmJiUlJSQkJCMjIyIiIiEhISAgIB8fHx4eHh0dHRwcHBsbGxoaGhkZGRgYGBcXFxYWFhUVFRQUFBMTExISEhERERAQEA4ODg0NDQkJCQUFBf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFAABMACwAAAAAMgAyAAAH/4BMgoOEhYQaIicuNDQyKyYlGYaTlJWGITE5Pjw6NjIzMzc6Ojw7Lh2WqZYLPT44NKCxsqA0OD88K6q6gi4/OrPAwJ88Qie7Oh+TGUM+n8HPsp9AQROprkM2hTZFNc7Q36AyNkQvluE7QByCP83g7rNBOJUiNjPiQCc0PDHv/aAxPnxQAnEjlgweOPj58xejB5FJ9BaKy6HjRo0atXbk6PYtRhAahiK+k7Hjh4wUDAp9SIEDyA1vwGIYEVFIZMcbQ1ogSKUhRxB70JDUrAfuxgsIu5h8GIIDpsEeNwjZhPYDQ1JBD4ToUDgrxhGkgkYQ/VYrxFVBQ3I4BYVDxyCx7v9k0AgS9ayRGsFkDKEgiMRYcAd/HLiaIQFXWTpcCCrxF1yMG0pGXJXRIxgNgUxM4H2XA0jFs0yMPANigcmJzdB0BOHhwipoJi12BNthDAXqWTXYubjwmlCFn8BwlEtxO9SOHTVQ9TbUAxbubCs23/jRA4aJ5ZVmNJ5BIweTGDp+/JihHHulF9tDeWAiI5l5VSpyBLNh9v2u+PNp2tflomDw8vtZEsN23QWoyw7OyVJDNgZaMgFwswjXoCUsyAYMD9dNSEkRz/wgiYaGwNDDWjP0kEoEPwjxngVHHBZLDjBYogIRCmxiHjd5FSEBJRCw80kMRLSwHBBqBXPDDpScIITQJ7HEIIQMrwWxVTAy8WVIDkIAJUsMQCCZ1AfxDJAXD3UVIsESLzyTiRAqqLJBDUI0Ak0SldQAhIsGzcCDDzAYAEIhBZhgww9NQRNDEZJVcoQOJMpyAw852MBIRsg5RqgqSbz0zqQJOtaDEbo4kEShC7nT0A9JNVDEDniWGg0QJp7VmZauGlQDETG+1oJWjY7UQxAbmEcDkb3mNcMOQghpXwcx3JLeLDTc4EMPyjZYwgya9PBKLDbgwEMPPMhQH4iCYBACCzBwN4MABIigQW+BAAA7"
nxt_gif = "R0lGODlhMgAyANUAAAAAAP///2BfYF5dXl1cXVxbXFNTVFtbXFdXWFVVVl1eXlpbW1hZWVdYWF9fXl5eXV1dXFxcW1tbWlpaWV9eXl5dXV1cXGRkZGNjY2JiYmFhYWBgYF9fX15eXl1dXVxcXFtbW1paWllZWVhYWFdXV1ZWVlVVVVRUVFNTU1FRUVBQUExMTEtLS0pKSv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFAAAuACwAAAAAMgAyAAAG/0CXcEgsGociS6eDODqfUCgHJBqJPJ+odmv8fEJgsAfELUdRnHBYVMma30UQSL1+MOB4F50+6Yzyb3N7ah0igGVfg4QNh1spGiKKYX6NWiAekmEcCZVRF1SZIR0GnVKYmSAOpVAZH5GSIB2rTxyJsBwos0cYgre6RiwZvYqXv0UkGqEhH7LGQy3JoR8ezkMnw4pjToUkIyTf4OHiJeTkIiQoyiFJzUMLrnIgXvP09fbTtsoWB9Zp6v8Ar4QQ4g+gQWUiKCQo0eGgw1BzRGB7SLGiRUkSSZy6aJEMJI4URVAy8RHkwWlDPGwIIS+ey5cwXX6YCOtBEROYROjcybOnz31IIkr8AyGgmoqNsCJUc9GBJh0OS7Eoo1Ztg6tQHExUuzT1jzNmryRxMPQVabYS1QooCDtIJFljBAqFekCiWh+2e67wqxpKBAQJS71kEvFhwFIXTsEQdrN0MMrDLma2nQlZCImxe0BArSzEKp0I7Tiv0JCTcGjOQlh6qZsnCAA7"
pre_gif = "R0lGODlhMgAyANUAAAAAAP///2BfYF5dXl1cXVxbXFNTVFtbXFdXWFVVVl1eXlpbW1hZWVdYWF9fXl5eXV1dXFxcW1tbWlpaWV9eXl5dXV1cXGRkZGNjY2JiYmFhYWBgYF9fX15eXl1dXVxcXFtbW1paWllZWVhYWFdXV1ZWVlVVVVRUVFNTU1FRUVBQUExMTEtLS0pKSv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFAAAuACwAAAAAMgAyAAAG/0CXcEgsGkmfDyhkbDqfUGLnIxKFPJpVdMstdiKhcPiz6ZqjnKU4LOKQzvAiiLoWz+N4D72+xsOTVnx2fmYDe4IhSYRcEhCBiCFli1EHHo+CIh0Tk1AkD5BsHQScT5mXfCIKBaROJR6gYXqsTW2wmR+zRiOvsB4guUUmHLZkwEW8oB8exkTDsCAdzEMRaqAeKtIuAtWwJVZV4OHi41VXJkUP3M9KIO3u7/DxSpHLQnqw+PmYGucjHaf6AoISocGFOoEIIXkgAQJgwocQI+JrGOKgxIQdSiSg4PBiQA5CrnT0CIvDiSEHLARUlqSly5cw2TX8sMCLhZFrUJAQUaJnT4MSQIMKHTpiZ7QmIJBBAnEym4t7sDS0cOpiCj4Nb5z6epaBBdU0zzBQRQE2GUiqHSyKEfEhA1UXDtSK8XA2m4EOtkBcoJrAmbVfTv3Z0pCCagO8sHBRzfTsrQt/E0A5dsHggcN2k118qACQA4rMBpUmUgxamYgRIkDUBe0CQYcONzkFAQA7"
sml_gif = "R0lGODlhMgAyAJEAAAAAAP///1paWv///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQFAAADACwAAAAAMgAyAAACvZyPqcvtD6Nsoto7s7q8Cz15Igc+42mVDMp+KnJu42uIkK16mQ7ye9cjlYA/zIsoQQ6FSSONeYPmpBRqzZdQOqitStZpAg+6Xpi4mjqQ01d22L0ut+Vv+nhtdm/F+LwdrTeHJegSdRZ0uJJY9Le3GKFV1xhi5RjY9KhYaXlpmPm16fkZM4Xjh1Iah7qkuorYOpPKcucqK9VCwxibCznL21v7C7grPGxarEmKnEy8DNrsfBoZrXZMLRN6TUtXAAA7"
ssz_gif = "R0lGODlhMgAyAOYAAAAAAP///ygoKSUlJiwsLTg4OTQ0NURERUFBQhERECMjIioqKTg4N1NTU1JSUktLS0lJSUhISEdHR0ZGRkVFRUREREJCQkFBQUBAQD8/Pz4+Pj09PTs7Ozo6Ojk5OTg4ODc3NzY2NjU1NTQ0NDMzMzIyMjExMTAwMC8vLy4uLi0tLSwsLCsrKyoqKikpKSgoKCcnJyYmJiUlJSQkJCMjIyIiIiEhISAgIB8fHx4eHh0dHRwcHBsbGxoaGhkZGRgYGBcXFxYWFhUVFRQUFBMTExISEhERERAQEA4ODg0NDQkJCQUFBf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFAABMACwAAAAAMgAyAAAH/4BMgoOEhYUZJSYrMjQ0LiciGoaTlJWGHS47PDo6NzMzMjY6PD45MSGWqZYrPD84NJ+xsp80OD49C6q6gidCPKCzwcE6Py67lRNBQMDCzbIyPkMZkx86qS9ENjLO3M81RTaFNkO2lThB3emz0D+CHEA72zOUPj4x6vifMTw0J0DaM2yImESkx718+WLg4CFvxg0QhmgEOdhMRo0cO17VqHFDRw6A+QQWEmGEYjAZN4DgSPGhEIMUMn7EwyeSEBJn24LkkGQJQYshN0w2qynoRo+Gz3AMabkLwgtP3YhCOCJUnw4hD44JwvAjHVEdOITJyDFEq6AQr7yOEERhCNJYNf+MmGVyIwiNt8JsrGXiQoewGAmmHTvwgyFNEoJ8wAp2VOsIJUFDlmBiYZkwuWY7AsmBr4YJJid2CNvRYu5WFzyC+OVW4wSTF2GDBalgmtAFFz5+1GhWAwUTG7tn0ehRe1KHGjt2QIWbgkmOxbJszCtOyQSMHj+g1ljhYXn0F9RTdZjx44eOU9KD5VARXtcHGUxEpJ+1vv2xDrFn3TBmf9fzYDbE0N8uwAVDww4D6gKbMEFMkGAqJvwSzA4sPGhJBl0JU4SFlvQgVg8wcEgJDJwFE8MRFrQnxA8RpCJBEXjN8E14pChABHuWKCdWDkAU1wIR97ADQSUUlPSXDkGYJoPGEBSFIoRrlNxgWDADnMPULjsAIdQ2QuRQSRI40SBEDRuookKXVX3ywhISUDJCEWl+IgMOP9hgQgGFgGAADD78EuMMMQBRgyV0xglXcq80YkMOPHgnlg5HqGKEQfg00og6KCWxyw+UIpTOnEk4cEwPQPzpqT47FNGAWTAQUYOp+GyzWW0bBHHUqbHIcFVp1LUghGiwnsQjDQO20IMPN0DnjA2txNCBhSHIwEMPPOAwXy3HcjaZiINoIAIBAswACwwshICBaYEAADs="
tul_ico = "AAABAAEASEgAAAEAIACIVAAAFgAAACgAAABIAAAAkAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AxYDAwMWAwMDFRgYGKgoKCj/HBwc/yIiIv8jIyP7BQUFJgAAAAAAAAAAFRUVkicnJ/8kJCT/Jycn/xMTE4kJCQlDJiYm/yEhIf8fHx//JiYm/yMjI/ciIiLvIiIi8CIiIvAiIiLwIiIi8CIiIvAiIiLwIiIi8CIiIvAiIiLwIiIi8CIiIvAiIiLwIiIi8CIiIvAiIiLwIiIi8CIiIvAiIiLwIiIi8CIiIvAiIiLwIiIi8CIiIvAiIiLwIiIi8CIiIvAiIiLwIiIi8CIiIvAiIiLwIiIi8CIiIvAiIiLwIiIi8CIiIvAiIiLwIiIi8CIiIvAiIiLwIiIi8CIiIvAiIiLwIiIi8CIiIvAiIiLwIiIi8CIiIvAiIiLwIiIi8CIiIvAiIiLwIiIi7yIiIvolJSX/HR0d/yIiIv8kJCT+BQUFKAAAAAAAAAAAFRUVkicnJ/8kJCT/Jycn/xMTE4kICAg4JiYm/yQkJP8cHBz/ISEh/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8jIyP/IyMj/yMjI/8gICD/Hh4e/yUlJf8jIyP3AwMDGgAAAAAAAAAAFRUVkicnJ/8kJCT/Jycn/xMTE4kBAQEHHBwcxigoKP8jIyP/Hx8f/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x0dHf8dHR3/HR0d/x4eHv8fHx//IyMj/ygoKP8WFhagAAAAAAAA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AAAJCQlDJiYm/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ycnJ/8nJyf/Jycn/ygoKP8iIiLpCAgIOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwsLTRQUFIkTExOHExMThhMTE4YTExOGExMThhMTE4YTExOGExMThhMTE4YTExOGExMThhMTE4YTExOGExMThhMTE4YTExOGExMThhMTE4YTExOGExMThhMTE4YTExOGExMThhMTE4YTExOGExMThhMTE4YTExOGExMThhMTE4YTExOGExMThhMTE4YTExOGExMThhMTE4YTExOGExMThhMTE4YTExOGExMThhMTE4YTExOGExMThhMTE4YTExOGExMThhMTE4YTExOGExMThhMTE4YTExOGExMTiBEREXQEBAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAD///8AAAD///8AAAD///8AAAD///8AAAD///8AAAD///8AAAD///8AAAD///8AAAD///8AAADAAAAAAAAAAf8AAACAAAAAAAAAAP8AAAAAAAAAAAAAAP8AAAAAAAAAAAAAAH8AAAAAAAAAAAAAAH8AAAAAAAAAAAAAAH8AAAAD4H8AAAADx///4H8AAAADg///4H8AAAADgf//4H8AAAADgP//4H8AAAADgH//4H8AAAADwD//4GAAAAAD4B//4GAAAAAD8A/8H///4GAAAAAD+Af4D///4GAAAAAD/APwD///4GAAAAAD/gHgB///4GAAAAAD/wDAA///4GAAAAAD/4AAAf//4GAAAAAD/8AAgP//4GAAAAAD/+ABgP//4GAAAAAD//ADwH/8IGAAAAAD//gH4D/4AGAAAAAD//wP8B/wAGAAAAAD//4f+A/gAGAAAAAD/h//+AfAIGAAAAAD+Af//AeAYGAAAAAD8AP//gMA4GAAAAAD4AH//wAB4GAAAAAD4AH//4AD4GAAAAADwAH//8AP4GAAAAADwMH//8Af4GAAAAADwAH//+A/4GAAAAAD4AH///B/4GAAAAAD4AH///j/4GAAAAAD8AP/4GAAAAAD+Af/4GAAAAAD/h//4GAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAOAAAACAAAAAAAAAAOAAAADAAAAAAAAAAeAAAAD//+AAAAD/+AAAAAAAAAAAAAD/8AAAAAAAAAAAAAD/8AAAAAAAAAAAAAD/8AAAAAAAAAEAAAD/+AAAAAAAAAMAAAD///8AAAD///8AAAD///8AAAD///8AAAD///8AAAD///8AAAD///8AAAD///8AAAD///8AAAD///8AAAD///8AAAA="
# 初始化参数
# 获取需要展示的图片路径并判断是否合法
# 合法则获取目标路径,并提取图片列表-->刷新到显示界面
def __init__(self):
pics = [tul_ico, fst_gif, bgr_gif, sml_gif, nsz_gif, ssz_gif, pre_gif, nxt_gif]
self.pics_path = ['pics' + f'/{name}'
for name in ['tul.ico', 'fst.gif', 'bgr.gif',
'sml.gif', 'nsz.gif', 'ssz.gif', 'pre.gif', 'nxt.gif']
]
if not exists('pics'):
mkdir('pics')
for i in range(len(self.pics_path)):
if exists(self.pics_path[i]):
continue
else:
with open(self.pics_path[i], 'wb') as f:
f.write(b64decode(pics[i]))
f.close()
self.path = None
self.dir = None
# 图片地址集合
self.imgs = None
# 当前文件夹内总图数
self.all_imgs = 0
# 源图
self.source_img = None
# 是否改变图像大小标志
self.change_size = None
# 当前源图尺寸(可能有旋转
self.size = None
# 当前图片缩放比例
self.upper = None
self.root = Tk()
self.root.iconbitmap(self.pics_path[0])
self.root.geometry('900x740+100+40')
self.root.title('图片查看器')
fst = imread(self.pics_path[1])
self.fst = PhotoImage(fst)
self.choose = Button(self.root,
image=self.fst,
relief='groove',
bg='#e6e6e6', bd=8,
command=self.openfile_tomwindow,
)
self.choose.pack(expand='yes', anchor='center', )
self.root.mainloop()