【发布时间】:2013-06-22 20:49:38
【问题描述】:
我不确定这是否可行,但我正在尝试以自动方式从 pdf 生成许多缩略图,然后将它们存储在 elasticsearch 中。基本上我想将 pdf 转换为一系列 jpg(或 png,或任何类似的东西),然后将它们索引为二进制文件。目前我正在制作这样的 jpg:
import subprocess
params = ['convert', 'pdf_file', 'thumb.jpg']
subprocess.check_call(params)
效果很好,但它只是将 jpg 文件写入文件系统。我希望将这些文件作为字符串而不将它们写到本地文件系统中。我试过使用子进程的标准输出方法,但我对使用子进程还很陌生,所以我无法弄清楚这一点。
我正在使用 imagemagick 进行此转换,但只要我能实现此目标,我愿意切换到任何其他工具。 有什么想法吗?
【问题讨论】:
-
当您在 python 中工作时,最好使用 python 而不是调用外部程序来完成,因为分叉往往很昂贵。
-
@zmo Forks 可能很昂贵,但我用相当大的 pdf 做了几次,所以我认为不通过 python 绑定的收益是值得的。另外我不相信子进程实际上是分叉的。
-
@SlaterTyranus:
subprocess肯定是分叉的(除非你在 Windows 上,在这种情况下它是CreateProcesses)。它还能如何工作? -
@SlaterTyranus:PS,你在哪个平台上分叉很贵?它们在 linux 上的速度非常快,而且速度足够快,以至于在 OS X 和其他现代 *BSD 上几乎不重要。)通常 exec 和链接加载器等比 fork 花费的时间要长得多(尽管仍然没有 Windows 长' 创建进程)。
标签: python image pdf thumbnails stdout