【问题标题】:How to export images into subdirectory in GIMP?如何将图像导出到 GIMP 中的子目录?
【发布时间】:2017-10-12 00:26:41
【问题描述】:

我使用 GIMP 进行一些批量编辑,其中一部分是使用从原始图像“文件名”获取的文件名导出绘画,并使用以下代码:

pdb.file_png_save_defaults(ima, drawable, fullpath, filename)

此刻,我有

fullpath=filename

因此它将图像保存到与源相同的文件夹中,并且文件名和完整路径相同。

我要做的是把它放到这个文件夹的子目录中,我们称之为"subfolder"。但如果我尝试:

fullpath = '\subfolder\'+filename

很明显,我遇到了一个错误,因为我使用 Python(或任何编程语言)已经有半个小时了,我几乎不知道自己在做什么。有人知道如何实现将图像导出到子文件夹吗?

更新:

现在是这个样子

sourcename = pdb.gimp_image_get_filename(ima)
basedir = os.path.dirname(sourcename)

if os.path.isdir(os.path.join(basedir,'Subfolder')) is False:
    os.makedirs(os.path.join(basedir,'Subfolder'))

fullpath = os.path.join(basedir,'Subfolder',filename)

...而且效果很好。几乎。现在我面临着 basedir 中变音符号的问题。当 basedir 包含类似“C:\Úklid\”的内容时,当代码在其中创建子目录时,我会收到“没有这样的文件或目录”错误。在我将源文件夹重命名为“C:\Uklid\”后,它可以轻松工作。但我确实需要它与 Windows 操作系统中有效的每条路径一起工作。有人可以帮我吗?

更新 2:

看起来 unicode() 成功了:

sourcename = pdb.gimp_image_get_filename(ima)
basedir = os.path.dirname(sourcename)

if os.path.isdir(os.path.join(basedir,'Subfolder')) is False:
    os.makedirs(unicode(os.path.join(basedir,'Subfolder')))

fullpath = os.path.join(basedir,'Subfolder',filename)

【问题讨论】:

  • 你得到什么错误?
  • >>> fullpath = '\subfolder\'+filename File "", line 1 fullpath = '\subfolder\'+filename ^ SyntaxError: EOL while scanning string literal
  • 您需要完整路径并且需要正斜杠,例如:fullpath = 'basedir/' + 'subfolder/' + filename
  • 所以我不能只保存到原始文件的子文件夹,我需要硬编码整个路径?
  • filename 是完整路径吗?如果是这样,您可以这样做:import os; basedir= os.path.dirname(filename); fullpath = os.path.join(basedir,'subfolder',filename)

标签: python export diacritics subdirectory gimp


【解决方案1】:

试试这个:

import os

sourcename = pdb.gimp_image_get_filename(ima) # gets full name of source file
basedir= os.path.dirname(sourcename) # gets path
name = pdb.gimp_layer_get_name(ima.layers[0]) # gets name of active layer
filename = name+'.png'
fullpath = os.path.join(basedir,'subfolder',filename) # use os.path.join to build paths
# new line vvv
os.makedirs(os.path.join(basedir,'subfolder')) # make directory if it doesn't exist
drawable = pdb.gimp_image_active_drawable(ima)
pdb.file_png_save_defaults(ima, drawable, fullpath, filename) # saves output file

【讨论】:

  • 就是这样!奇迹般有效。我无法表达我有多高兴。非常感谢!
  • Samozřejmě :-) Není zač!
  • 哦,哇。有没有机会帮助我将此脚本转换为 GIMP 插件? :D 我在 Google 上搜索了很多,但仍然无法将其放入我的 GIMP 菜单。
  • @JaroslavSpříjmením:很抱歉,我对 GIMP 插件一无所知... Přeju hodně štěstí。
  • 没关系,我想通了。无论如何,我发现您的代码还有另一个复杂之处。其中有“如果目录不存在则制作目录”行。问题是当目录已经存在时,它会产生巨大的错误并且整个脚本停止。有没有什么办法只有在目录不存在时才运行这一行?
猜你喜欢
  • 2018-09-30
  • 2015-11-13
  • 1970-01-01
  • 2017-12-01
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
  • 2021-08-08
  • 1970-01-01
相关资源
最近更新 更多