2013-03-06 7 views
0

OS 우분투 12.04 정밀한, 파이썬 2.7.3, 피라미드 웹 프레임 워크에 IM 실패 6.4.7-1초 ImageMagick이 과정은 파이썬

나는 피라미드 웹 프레임 워크 응용 프로그램 내에서 파이썬 코드를 (있어요,하지만해야 관련 없음). 캡처 한 이미지 capture.jpg를 가져온 다음 이미지에서 두 개의 ImageMagick 프로세스를 수행해야합니다. 첫 번째는 이미지에 레이블을 붙이기 위해 변환되며 두 번째는 이미지 위에 워터 마크를 적용하고 레이블은 작동하지 않습니다. 처음에는 이미지가 준비되지 않았기 때문에 두 번째 작업이 자동으로 실패했다고 생각했지만 대기 타이머를 추가하면 그렇지 않은 것으로 나타났습니다. 두 작업을 결합하는 방법에 대한 아이디어가 있습니까? 하나의 쉘 명령으로 결합 될 수 없습니다.

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

하나의 통화로 결합 될 수없는 이유는 무엇입니까? 첫 번째 결과에 따라 매개 변수가 동적으로 업데이트됩니까? 또한 명령 행에서 프로세스가 정상적으로 작동한다고 가정 할 수 있습니까? 마지막으로 두 번째 하위 프로세스의 오류 코드는 무엇입니까? 아무 것도 없다면,'composite'는 그 일을합니다. 여러분이 기대하는 방식이 아닙니다. – Evert

답변

0

나는 당신이 틀린 방식으로 listsina를 혼합하고 있다고 생각합니다. imp은 이미 목록이며 []check_call 호출로 넣었습니다. 목록에있는 목록을 얻습니다. 기타 추가 tfile은 목록에 연결할 수없는 문자열이지만 TypeError 예외로 표시되어야합니다. 그리고 세 번째 문제는 발견했습니다. outfile을 outfile에 문자열로 연결하므로 두 번째 프로세스에 유효한 입출력 파일이 없습니다.

+0

@krase 감사합니다. 예. 프로세스가 명령 행에서 제대로 작동했습니다. 하나의 통화로 결합 될 수 없습니다. 해결책은 subprocess.check_call 대신 subprocess.call을 사용하여 아직 완전히 이해하지 못한 이유였습니다. 작업 코드 : inpfile = args = [] args + = [ "-background", "White"] ... args + = [ "-append"] subprocess.call ([ "convert", inpfile ] + 인수 + [OUTFILE]) \t IMP = [] \t IMP + = "-dissolve", "25"] \t IMP + = "2. 중력", "남쪽"] \t subprocess.call ([ "composite"] + imp + [tfile] + [outfile] + [outfile]) – user2139543