Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ImageMagick';s";转换;作为Python子进程的实用程序_Python_Imagemagick_Subprocess_Imagemagick Convert - Fatal编程技术网

使用ImageMagick';s";转换;作为Python子进程的实用程序

使用ImageMagick';s";转换;作为Python子进程的实用程序,python,imagemagick,subprocess,imagemagick-convert,Python,Imagemagick,Subprocess,Imagemagick Convert,我正在寻找转换缩略图的大目录 我不想使用PythonMagick包装器,而是想直接访问convert二进制文件(我有很多标志,我认为这对于大量照片来说更有效) 是否有将ImageMagick用作子流程的工作示例?或者,有没有更好的方法 具体来说,我不确定如何从类中开始和结束Python子流程。我的课叫ThumbnailGenerator。我希望制作这样的东西: >> t = ThumbnailGenerator() >> t.makeThumbSmall('/path/t

我正在寻找转换缩略图的大目录

我不想使用PythonMagick包装器,而是想直接访问convert二进制文件(我有很多标志,我认为这对于大量照片来说更有效)

是否有将ImageMagick用作子流程的工作示例?或者,有没有更好的方法

具体来说,我不确定如何从类中开始和结束Python子流程。我的课叫ThumbnailGenerator。我希望制作这样的东西:

>> t = ThumbnailGenerator()
>> t.makeThumbSmall('/path/to/image.jpg')  
>> True

以下是我在一个项目中使用的内容:

def resize_图像(输入、输出、大小、质量=无、裁剪=假、强制=假):
如果(非强制)和os.path.exists(输出)和
os.path.getmtime(输出)>os.path.getmtime(输入)):
返回
参数=[]
如果作物:
参数+=[“-调整大小”,大小+“^”]
参数+=[“-重力”,“中心”,“-裁剪”,大小+“+0+0”]
其他:
参数+=[“-调整大小”,大小]
参数+=[“-反锐化”,“0x0.4+0.6+0.008”]
如果质量不是零:
参数+=[“-质量”,str(质量)]
子进程检查调用([“转换”,输入]+参数+[输出])

每次转换将启动一个进程。如果源映像不是两个小映像,则进程启动开销将相对较小。

使用
subprocess.Popen
subprocess.call
应该很容易做到。您的命令行是什么样子的?我不太清楚的不是命令行,而是如何在类中启动、停止和调用此类子进程。我更新了问题,使之更加具体。Thanks@ensnare:我不知道如何在批处理模式下运行convert,尽管我没有仔细检查。这就是你的目标吗?@SvenMarnach是的,或者至少让可执行文件保持打开状态,这样我就可以继续向它抛出convert字符串。这会更有效,对吗?@ensnare:对于像
exiftool
这样的东西,它会更有效,因为与实际操作相比,启动Perl解释器的开销相当大,而实际操作只包括提取元数据。对于
convert
,情况正好相反:启动开销相当小,实际工作更重要,因此开销的百分比很小。我要么用PythonMagick,PIL,要么不用担心开销。(我过去使用过后两种方法。)