如何在GIMP会话间保存插件的文件夹路径设置?
GIMP插件会话间保存文件夹路径的解决方案
方法一:用GIMP原生API(推荐)
利用pdb.gimp_set_data()和pdb.gimp_get_data()实现配置存储,这是GIMP官方提供的插件数据持久化方式:
- 加载已保存的路径
在你的插件主函数layerToTilesRC开头,先读取之前保存的配置:
def layerToTilesRC(image, layer, pokeName, direction, shadowsize, loop, pngFolder, gifFolder): # 读取保存的路径,键名加插件ID前缀避免冲突 saved_png = pdb.gimp_get_data("ofn-layer-to-tiles-rc-pngFolder") saved_gif = pdb.gimp_get_data("ofn-layer-to-tiles-rc-gifFolder") # 如果有保存值,覆盖默认传入的路径 if saved_png is not None: pngFolder = saved_png if saved_gif is not None: gifFolder = saved_gif # 后续插件逻辑...
- 保存用户选择的路径
在用户确认路径后(比如插件处理流程结束时),执行保存操作:
# 存储路径到GIMP数据系统 pdb.gimp_set_data("ofn-layer-to-tiles-rc-pngFolder", pngFolder) pdb.gimp_set_data("ofn-layer-to-tiles-rc-gifFolder", gifFolder) # 强制写入磁盘,确保重启GIMP后数据不丢失 pdb.gimp_data_flush()
方法二:手动读写配置文件
如果原生API使用有问题,可以自己创建配置文件存储:
- 确定配置文件位置
选择GIMP用户目录作为存储位置,避免权限问题:
import os import json from pathlib import Path # 根据系统自动定位GIMP配置目录 if os.name == 'nt': gimp_config_dir = os.path.expanduser("~/AppData/Roaming/GIMP/2.10") else: gimp_config_dir = os.path.expanduser("~/.config/GIMP/2.10") config_file = Path(gimp_config_dir) / "ofn-layer-to-tiles-rc-config.json"
- 加载配置
在插件主函数开头读取配置:
def layerToTilesRC(image, layer, pokeName, direction, shadowsize, loop, pngFolder, gifFolder): if config_file.exists(): with open(config_file, 'r', encoding='utf-8') as f: config = json.load(f) pngFolder = config.get('pngFolder', pngFolder) gifFolder = config.get('gifFolder', gifFolder) # 后续插件逻辑...
- 保存配置
在用户选择路径后写入文件:
config = { 'pngFolder': pngFolder, 'gifFolder': gifFolder } with open(config_file, 'w', encoding='utf-8') as f: json.dump(config, f)
对你的register代码的调整
把PF_DIRNAME的默认值从None改为空字符串,更兼容后续的赋值逻辑:
(PF_DIRNAME, 'pngFolder', 'Spritesheet folder', ""), (PF_DIRNAME, 'gifFolder', 'Finished gif folder', ""),
常见问题排查
- 使用原生API时,必须调用
pdb.gimp_data_flush(),否则数据只存在内存中,重启GIMP会丢失。 - 手动写配置文件时,要确认路径在不同系统下的正确性,比如Windows和Linux的GIMP配置目录位置不同。
内容的提问来源于stack exchange,提问作者spaghetti
相关产品推荐
相关产品推荐

