acdr/acdr-ui/tootls/gif制作脚本.py

46 lines
1.8 KiB
Python
Raw Normal View History

2024-09-19 01:44:07 +08:00
import tkinter as tk
from tkinter import filedialog, messagebox
from PIL import Image
class GIFMakerApp:
def __init__(self, root):
self.root = root
self.root.title("GIF Maker")
# 选择图片按钮
self.select_button = tk.Button(root, text="选择图片", command=self.select_images)
self.select_button.pack(pady=10)
# 保存 GIF 按钮
self.save_button = tk.Button(root, text="保存 GIF", command=self.save_gif, state=tk.DISABLED)
self.save_button.pack(pady=10)
self.images = [] # 保存选择的图片
def select_images(self):
# 选择多张图片
image_paths = filedialog.askopenfilenames(title="选择图片", filetypes=[("Image files", "*.jpg;*.png;*.jpeg;*.bmp"), ("All files", "*.*")])
if image_paths:
self.images = [Image.open(image_path) for image_path in image_paths] # 打开所有选择的图片
messagebox.showinfo("已选择图片", f"已选择 {len(self.images)} 张图片")
self.save_button.config(state=tk.NORMAL) # 启用保存按钮
def save_gif(self):
if not self.images:
messagebox.showwarning("警告", "没有选择图片!")
return
# 设置保存文件名
save_path = filedialog.asksaveasfilename(defaultextension=".gif", filetypes=[("GIF files", "*.gif")])
if save_path:
# 保存为GIF指定每帧的时间间隔
self.images[0].save(save_path, save_all=True, append_images=self.images[1:], duration=10, loop=0)
messagebox.showinfo("成功", f"GIF 已保存到: {save_path}")
# 启动 GUI 应用
if __name__ == "__main__":
root = tk.Tk()
app = GIFMakerApp(root)
root.geometry("300x200")
root.mainloop()