From 7808d7a555782ef1726c49e8afb1f86b0cba5d87 Mon Sep 17 00:00:00 2001 From: wood chen Date: Sat, 24 May 2025 20:02:52 +0800 Subject: [PATCH] =?UTF-8?q?fix(gui):=20=E9=9A=90=E8=97=8F=E8=B0=83?= =?UTF-8?q?=E8=89=B2=E6=9D=BF=E7=94=9F=E6=88=90=E5=92=8CGIF=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E8=BF=87=E7=A8=8B=E4=B8=AD=E7=9A=84CMD=E7=AA=97?= =?UTF-8?q?=E5=8F=A3=E5=B9=B6=E6=94=B9=E8=BF=9B=E9=94=99=E8=AF=AF=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gui.py | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/gui.py b/gui.py index 5997a22..b542ffb 100644 --- a/gui.py +++ b/gui.py @@ -309,15 +309,23 @@ class VideoToGifConverter: # 打印命令用于调试 print("调色板生成命令:", " ".join(palette_cmd)) + # 创建 startupinfo 对象(用于隐藏 CMD 窗口) + startupinfo = None + if platform.system().lower() == "windows": + startupinfo = subprocess.STARTUPINFO() + startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW + startupinfo.wShowWindow = subprocess.SW_HIDE + # 运行调色板生成命令 process = subprocess.Popen( palette_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, - startupinfo=( - subprocess.STARTUPINFO() + startupinfo=startupinfo, + creationflags=( + subprocess.CREATE_NO_WINDOW if platform.system().lower() == "windows" - else None + else 0 ), ) _, stderr = process.communicate() @@ -361,16 +369,22 @@ class VideoToGifConverter: gif_cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, - startupinfo=( - subprocess.STARTUPINFO() + startupinfo=startupinfo, + creationflags=( + subprocess.CREATE_NO_WINDOW if platform.system().lower() == "windows" - else None + else 0 ), ) _, stderr = process.communicate() if process.returncode != 0: - raise RuntimeError(f"GIF生成失败: {stderr.decode()}") + error_output = "" + try: + error_output = stderr.decode("utf-8", errors="replace") + except Exception: + error_output = str(stderr) # Fallback to raw string representation + raise RuntimeError(f"GIF生成失败: {error_output}") # 删除临时调色板文件 if os.path.exists(palette_path):