我有一个从ImageMagik转换的子流程调用,可以将gif切片成帧,但当它遇到像这样的坏gif时(http://www.image-share.com/upload/3207/277.gif)
try:
command = ["convert" , "-coalesce", "-scene" , "0" , infile, outfile]
output,error = subprocess.Popen(command, universal_newlines=True,stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
except:
print "%%% convert failed Up"
else:
print "*** converted"
我从不例外。文件未创建,打印输出和错误导致为空
当你从命令行执行相同的命令时,你会得到以下错误:
convert -coalesce examine.gif video.png convert: corrupt image examine.gif' @ error/gif.c/ReadGIFImage/1368.
convert: no images definedvideo.png' @ error/convert.c/ConvertImageCommand/3252.
所以它确实输出了一条错误消息,但我似乎无法捕获它!是否有解决坏gif和错误输出的方法?
我建议评估subprocess.Popen.returncode
。在本例中,应该抛出(或引发)任何非零响应。
try:
command = ["convert" , "-coalesce", "-scene" , "0" , infile, outfile]
child = subprocess.Popen(command, universal_newlines=True,stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output,error = child.communicate()
if child.returncode != 0:
raise Exception("Oops") # Although you should use a better Exception + message
except:
print( "%%%% convert failed Up")
else:
print( "*** converted")