2013-03-06 36 views
0

操作系統Ubuntu的12.04精確,蟒蛇2.7.3,金字塔web框架失敗,IM 6.4.7-1秒ImageMagick的過程在Python

我有Python代碼(金字塔Web框架應用程序中,但應該無關緊要),它需要捕獲的圖像capture.jpg,然後需要在圖像上執行兩個ImageMagick進程。第一種是將圖像轉換爲標籤(工作),第二種是將水印應用於圖像和標籤(不起作用)。起初我以爲第二次操作由於圖像沒有準備好而失敗,但添加一個等待計時器表明情況並非如此。任何想法如何組合這兩個操作?它們不能合併成一個shell命令。

now = datetime.datetime.utcnow() 
    inpfile = "/home/brian/capture.jpg" 
    tfile = "/home/brian/watermark.png" 
    label = ("SN7 %s" % now.strftime("%Y%m%d%H%M%S")) 
    outfile = ("/home/brian/%s" % now.strftime("CAM_%Y%m%d%H%M%S") + ".jpg") 
    args = [] 
    args += ["-background", "White"] 
args += ["-pointsize","42"] 
    args += ["label: "+ label] 
    args += ["-gravity", "Center"] 
args += ["-append"] 
subprocess.check_call(["convert",inpfile] + args + [outfile]) 
time.sleep(5) 
imp = [] 
imp += ["-dissolve", "25"] 
imp += ["-gravity", "South"] 
subprocess.check_call(["composite"] + [imp] + tfile + outfile + outfile) 
    return [] 
+0

爲什麼他們不能在一個電話中合併?參數是否根據第一個結果動態更新?另外,我們可以假設你的過程在命令行上正常工作嗎?最後,第二個子進程的錯誤代碼是什麼?如果沒有,那麼'複合材料'就能完成它的工作,而不是你期望的。 – Evert 2013-03-06 11:14:49

回答

0

我認爲你是混合listsina錯誤的方式。 imp已經是一個列表,並且您在check_call調用中將其放置在[]中。所以你在列表中得到一個列表。 另外tfile是一個不能連接到列表的字符串,但是這應該是一個TypeError異常。 我發現第三個問題;您將outfile作爲字符串連接到outfile,因此第二個進程將沒有有效的輸入和輸出文件。

+0

謝謝@krase。是的,這個過程在命令行上運行良好。他們不能在一次通話中合併。原因是我沒有完全理解的原因是解決方案是使用subprocess.call而不是subprocess.check_call。工作代碼:inpfile = args = [] args + = [「-background」,「White」] ... args + = [「--append」] subprocess.call([「convert」,inpfile ] + ARGS + [OUTFILE]) \t小鬼= [] \t小鬼+ = [ 「-dissolve」, 「25」] \t小鬼+ = [ 「-gravity」, 「南」] \t subprocess.call( [「composite」] + imp + [tfile] + [outfile] + [outfile]) – user2139543 2013-03-16 06:18:03