Tôi đang sử dụng tập lệnh python được gọi bởi gimp phần mềm ảnh để chuyển đổi pdf sang jpg. Tập lệnh hoạt động tốt cho đến nay, nhưng khi hoàn thành, gimp sẽ mở một cửa sổ cmd với nội dung "Nhấn phím bất kỳ để thoát". Cửa sổ cmd này là tiến trình gimp.exe và tôi không thể tắt nó bằng tập lệnh của mình (tôi không muốn phải nhập dữ liệu đầu vào của người dùng mỗi khi chạy tập lệnh của mình).
Tôi đã thử một cái gì đó như os.system("taskkill/im gimp-2.8.exe")
Và sys.exit(0)
lệnh python như thế này nhưng không có lệnh nào hoạt động.
Đây là kịch bản python của tôi:
nhập os,time,sys,glob,re
từ nhập gimpfu *
rxcountpages = re.compile(r"/Type\s*/Page([^s]|$)", re.MULTILINE|re.DOTALL)
#Chuyển đổi một tệp pdf
quá trình def (infile, outfile):
in "Đang xử lý tập tin %s" % infile
đối với x trong phạm vi(1,countPages(infile) + 1):
in "Thử nghiệm"
countStr = str(x)
pdb.file_ps_load_setargs(100, 0, 0, 0, countStr, 6, 2, 2)
hình ảnh = pdb.file_ps_load(infile,infile)
drawable = pdb.gimp_image_get_active_layer(hình ảnh)
in "Tệp %s đã được tải OK" % infile
#outfile=os.path.join('đã xử lý',os.path.basename(infile))
#outfile=os.path.join(os.path.dirname(infile),outfile)
in tập tin
tên tệp, file_extension = os.path.splitext(outfile)
đầu ra = tên tệp + "_" + countStr + ".jpg"
in "Đang lưu vào %s" % outfile
pdb.file_jpeg_save(hình ảnh, có thể vẽ, đầu ra, đầu ra, 0.9,0,1,0,"",0,1,0,0)
in "Đã lưu vào %s" % outfile
pdb.gimp_image_delete(hình ảnh)
in "---------"
def countPages(tên tệp):
data = file(tên file,"rb").read()
trả về len(rxcountpages.findall(data))
if __name__ == "__main__":
print "Đang chạy với tên __main__ với args: %s" % sys.argv
Đây là cách tôi gọi tập lệnh gimp từ dòng lệnh Windows:
"C:\Program Files\GIMP 2\bin\gimp-2.8.exe" -idf --batch-interpreter python-fu-eval -b "import sys;sys.path=['.']+sys.path; nhập PDF;PDF.process('%1','%2');PDF.exit()" -b "pdb.gimp_quit(1)"
Tôi nghĩ lệnh gimp gimp_quit(1)
sẽ đóng cửa sổ, nhưng không được.
Đây có vẻ là một vấn đề đơn giản nhưng tôi đã dành vài giờ để giải quyết vấn đề này, vì vậy mọi trợ giúp đều được đánh giá cao. Cảm ơn.
Ok, tôi đã có giải pháp bằng cách hỏi trong diễn đàn cụ thể của gimp:
Một cửa sổ bảng điều khiển bổ sung mở ra vì tôi không chỉ định xem gimp có ghi nhật ký tin nhắn của nó hay không. Đó là lý do tại sao nó mở thêm một cửa sổ giao diện điều khiển.
Vì vậy, yêu cầu bây giờ trông như thế này:
"C:\Program Files\GIMP 2\bin\gimp-console-2.8.exe" -idf --batch-interpreter python-fu-eval -b "import sys;sys.path=['.']+sys. path;nhập PDF;PDF.process('%1','%2');" -b "pdb.gimp_quit(1)" 1>c:\\temp\\gimp_startup.txt 2>&1
Tôi là một lập trình viên xuất sắc, rất giỏi!