我有一个batch processing script in GIMP,对于目录中的每个图像文件,它涉及到导入图像,导入背景图像作为层,进行一些编辑,以及导出图像。对于69x96的.tga图像,编辑根本不需要时间,但是gimp-file-load、gimp-file-load-layer和gimp-file-save步骤总共需要3-4秒,因此批处理过程将花费一天的大部分时间来处理数以千计的文件。
有没有更快的方法来导入/导出这些图片?也许我可以通过保持背景图像打开直到批处理过程完成来消除背景导入步骤。但是,我应该用什么来代替
(gimp-file-load-layer 1 image background)
将背景图像添加为图层?我不知道有任何程序可以在两个图像之间传输数据,无论是否在GIMP中打开,而不使用剪贴板(我已经在使用它来传输alpha通道数据)或文件加载。
发布于 2021-11-03 17:46:39
不是真正的答案,但对于评论来说太长了:
使用两个200x200 TGA文件(填充等离子):
import time
times=[]
times.append(time.time())
image = pdb.gimp_file_load("/tmp/TGA/TGA-200x200-in.tga","/tmp/TGA/TGA-200x200-in.tga")
times.append(time.time())
layer = pdb.gimp_file_load_layer(image, "/tmp/TGA/TGA-200x200-in2.tga")
times.append(time.time())
pdb.gimp_image_add_layer(image, layer, 0)
times.append(time.time())
layerOut = pdb.gimp_image_flatten(image)
times.append(time.time())
pdb.file_tga_save(image,layerOut,"/tmp/TGA/TGA-200x200-out.tga","/tmp/TGA/TGA-200x200-out.tga", 1, 0)
times.append(time.time())
print "Steps:", [ "%5.1fms" % ((e-s)*1000) for s,e in zip(times[:-1],times[1:])]
print "Total: %5.1fms" % ((times[-1]-times[0])*1000)收益率:
Steps: [' 97.7ms', '106.3ms', ' 20.6ms', ' 22.2ms', '102.6ms']
Total: 349.4ms所以这对我来说快了10倍。尝试的变体(例如,使用file-save而不是file-tga-save )在运行时间上没有任何显着变化。
是的,这是Python,但AFAIK这最终会在Gimp中运行相同的代码(否则您有一个解决方案...)。所以我想你遇到了一个I/O瓶颈。
在带有固态硬盘的Corei5-9400H 2.50 and上进行测量,运行Linux和ext4文件系统(这可能是另一种解决方案...)。
https://stackoverflow.com/questions/69800384
复制相似问题