Python и Gimp: как правильно убить процесс gimp?
Я использую скрипт на python, который вызывается программой для обработки фотографий gimp для преобразования pdf в jpg. Пока что скрипт работает нормально, но когда он закончен, окно cmd остается открытым gimp, говоря "нажмите любую клавишу для выхода". Это окно cmd представляет собой процесс gimp.exe, и мне не удается убить его с помощью моего скрипта (я не хочу вводить пользовательский ввод каждый раз, когда запускаю свой скрипт).
Я пробовал команды Python, такие как os.system("taskkill /im gimp-2.8.exe")
а также sys.exit(0)
но ни один из них не работает.
Это мой скрипт на python:
import os,time,sys,glob,re
from gimpfu import *
rxcountpages = re.compile(r"/Type\s*/Page([^s]|$)", re.MULTILINE|re.DOTALL)
#Convert a single pdf file
def process(infile, outfile):
print "Processing file %s " % infile
for x in range(1,countPages(infile) + 1):
print "Test"
countStr = str(x)
pdb.file_ps_load_setargs(100, 0, 0, 0, countStr, 6, 2, 2)
image = pdb.file_ps_load(infile,infile)
drawable = pdb.gimp_image_get_active_layer(image)
print "File %s loaded OK" % infile
#outfile=os.path.join('processed',os.path.basename(infile))
#outfile=os.path.join(os.path.dirname(infile),outfile)
print outfile
filename, file_extension = os.path.splitext(outfile)
output = filename + "_" + countStr + ".jpg"
print "Saving to %s" % outfile
pdb.file_jpeg_save(image, drawable, output, output, 0.9,0,1,0,"",0,1,0,0)
print "Saved to %s" % outfile
pdb.gimp_image_delete(image)
print "---------"
def countPages(filename):
data = file(filename,"rb").read()
return len(rxcountpages.findall(data))
if __name__ == "__main__":
print "Running as __main__ with args: %s" % sys.argv
Вот как я вызываю свой скрипт gimp из командной строки Windows:
"C:\Program Files\GIMP 2\bin\gimp-2.8.exe" -idf --batch-interpreter python-fu-eval -b "import sys;sys.path=['.']+sys.path;import PDF;PDF.process('%1','%2');PDF.exit()" -b "pdb.gimp_quit(1)"
Я бы подумал, что команда GIMP gimp_quit(1)
закроет окна, но это не так.
Это кажется такой простой проблемой, но я трачу на это часы, поэтому любая помощь приветствуется. Благодарю.
1 ответ
Хорошо, я получил решение, спросив на форуме GIMP:
Дополнительное окно консоли было открыто, потому что я не указал, где gimp должен регистрировать свои сообщения. Вот почему он открыл дополнительное окно консоли.
Итак, запрос теперь выглядит так:
"C:\Program Files\GIMP 2\bin\gimp-console-2.8.exe" -idf --batch-interpreter python-fu-eval -b "import sys;sys.path=['.']+sys.path;import PDF;PDF.process('%1','%2');" -b "pdb.gimp_quit(1)" 1>c:\\temp\\gimp_startup.txt 2>&1