python PyWebIO实现浏览gif/视频效果
代码功能,使用浏览器批量浏览gif mp4等文件



备注:视频尺寸过大会导致加载很慢
代码:
import tkinter as tk
import os,sys
import windnd
from pywebio.output import *
from pywebio import STATIC_PATH
from PIL import Image
import pywebio_battery
from random import sample
baseDirPath = sys.path[0]
if __name__ == '__main__':
root = tk.Tk()
root.geometry('1080x540')
################################################
path = tk.StringVar()
path.set('d:\\')
play_list = []
def dragged_files(files):
msg = '\n'.join((item.decode('gbk') for item in files))
path.set(msg)
types = ['jpg','png','gif','mp4']
def bf():
pass
def play():
global play_list
play_list = []
dir_path = path.get()
print(dir_path)
for roots, dirs, files in os.walk(dir_path):
for file in files:
if file.split('.')[-1].lower() in types:
file_path = os.path.join(roots, file)
print(file_path)
play_list += [file_path]
print(play_list)
with use_scope('E'):
put_row([put_button('before', onclick = bf,color = 'primary', outline=True), put_button('after', onclick = bf,color = 'primary', outline=True)],size = '90% 10px 10%')
with use_scope('A'):
index_list = sample(range(0, len(play_list)-1), 8)
for index_n in index_list:
fpath = play_list[index_n]
if fpath.split('.')[-1].lower() == 'mp4':
with open(fpath, 'rb') as f:
video_data = f.read()
pywebio_battery.put_video(video_data, width = '400px', muted = True, autoplay = True, loop=True)
else:
img = open(fpath, 'rb').read()
put_image(img, width='400px')
put_html('''
<style>
#pywebio-scope-E {position: fixed;top: 0;width: 70%;background-color: #fff;}
#pywebio-scope-A {border: 1px solid red;margin-top:30px; margin-left:20px;}
</style>
''').show()
##########界面 绘制#####################
code_fm = tk.LabelFrame(root, text='', padx= 10, pady = 2)
code_fm.pack(fill = 'x')
code_num = tk.Label(code_fm, text='地址', padx= 10, pady = 2)
code_num.pack(side='left')
code_num_e = tk.Entry(code_fm, width = 60, textvariable=path)
code_num_e.pack(side='left', padx = 5,pady = 2)
#################
windnd.hook_dropfiles(code_num_e , func=dragged_files)
tk.Button(code_fm, text='播放', width = 10, command = play).pack(side='left', padx = 5, pady = 2)
root.mainloop()
源码:https://download.youkuaiyun.com/download/mjc1321/89075697
本文介绍了如何使用Python的PyWebIO库实现一个简单的功能,让用户在浏览器中批量浏览和预览GIF和MP4文件,同时处理视频尺寸过大导致的加载问题。
510

被折叠的 条评论
为什么被折叠?



