@@ -121,10 +121,17 @@ def on_file_completed(self, result):
121121 os .makedirs (final_output_folder , exist_ok = True )
122122
123123 save_kwargs = {}
124- if final_output_path .lower ().endswith (('.jpg' , '.jpeg' , '.webp' )):
124+ image_to_save = result ['image_data' ]
125+
126+ # Convert RGBA to RGB for JPEG format
127+ if final_output_path .lower ().endswith (('.jpg' , '.jpeg' )):
128+ if image_to_save .mode == 'RGBA' :
129+ image_to_save = image_to_save .convert ('RGB' )
130+ save_kwargs ['quality' ] = save_quality
131+ elif final_output_path .lower ().endswith ('.webp' ):
125132 save_kwargs ['quality' ] = save_quality
126133
127- result [ 'image_data' ] .save (final_output_path , ** save_kwargs )
134+ image_to_save .save (final_output_path , ** save_kwargs )
128135
129136 # 更新translation_map.json
130137 self ._update_translation_map (original_path , final_output_path )
@@ -335,10 +342,10 @@ def get_display_mapping(self, key: str) -> Optional[Dict[str, str]]:
335342 },
336343 "translator" : {
337344 "youdao" : "有道翻译" , "baidu" : "百度翻译" , "deepl" : "DeepL" , "papago" : "Papago" ,
338- "caiyun" : "彩云小译" , "chatgpt " : "ChatGPT" , "chatgpt_2stage" : "ChatGPT (2-Stage) " ,
339- "none" : "无" , "original" : "原文" , "sakura" : "Sakura" , "deepseek" : "DeepSeek" ,
340- "groq" : "Groq" , "gemini" : "Google Gemini" , "gemini_2stage" : "Gemini (2-Stage)" ,
341- "openai_hq" : "高质量翻译 OpenAI" , "gemini_hq" : "高质量翻译 Gemini" , "custom_openai" : "自定义 OpenAI" ,
345+ "caiyun" : "彩云小译" , "openai " : "OpenAI " ,
346+ "none" : "无" , "original" : "原文" , "sakura" : "Sakura" ,
347+ "groq" : "Groq" , "gemini" : "Google Gemini" ,
348+ "openai_hq" : "高质量翻译 OpenAI" , "gemini_hq" : "高质量翻译 Gemini" ,
342349 "offline" : "离线翻译" , "nllb" : "NLLB" , "nllb_big" : "NLLB (Big)" , "sugoi" : "Sugoi" ,
343350 "jparacrawl" : "JParaCrawl" , "jparacrawl_big" : "JParaCrawl (Big)" , "m2m100" : "M2M100" ,
344351 "m2m100_big" : "M2M100 (Big)" , "mbart50" : "mBART50" , "qwen2" : "Qwen2" , "qwen2_big" : "Qwen2 (Big)" ,
@@ -357,6 +364,8 @@ def get_display_mapping(self, key: str) -> Optional[Dict[str, str]]:
357364 "inpainter" : "修复模型" , "inpainting_size" : "修复大小" , "inpainting_precision" : "修复精度" ,
358365 "renderer" : "渲染器" , "alignment" : "对齐方式" , "disable_font_border" : "禁用字体边框" ,
359366 "disable_auto_wrap" : "AI断句" , "font_size_offset" : "字体大小偏移量" , "font_size_minimum" : "最小字体大小" ,
367+ "max_font_size" : "最大字体大小" , "font_scale_ratio" : "字体缩放比例" ,
368+ "center_text_in_bubble" : "AI断句时文本居中" ,
360369 "direction" : "文本方向" , "uppercase" : "大写" , "lowercase" : "小写" , "gimp_font" : "GIMP字体" ,
361370 "font_path" : "字体路径" , "no_hyphenation" : "禁用连字符" , "font_color" : "字体颜色" ,
362371 "auto_rotate_symbols" : "竖排内横排" , "rtl" : "从右到左" , "layout_mode" : "排版模式" ,
@@ -572,10 +581,17 @@ def on_task_finished(self, results):
572581 os .makedirs (output_folder , exist_ok = True )
573582
574583 save_kwargs = {}
575- if file_extension in ['.jpg' , '.jpeg' , '.webp' ]:
584+ image_to_save = result ['image_data' ]
585+
586+ # Convert RGBA to RGB for JPEG format
587+ if file_extension in ['.jpg' , '.jpeg' ]:
588+ if image_to_save .mode == 'RGBA' :
589+ image_to_save = image_to_save .convert ('RGB' )
576590 save_kwargs ['quality' ] = save_quality
577-
578- result ['image_data' ].save (final_output_path , ** save_kwargs )
591+ elif file_extension == '.webp' :
592+ save_kwargs ['quality' ] = save_quality
593+
594+ image_to_save .save (final_output_path , ** save_kwargs )
579595 saved_files .append (final_output_path )
580596 self .logger .info (f"成功保存文件: { final_output_path } " )
581597 except Exception as e :
0 commit comments