【问题标题】:Set temporary directory for single ImageMagick convert call为单个 ImageMagick 转换调用设置临时目录
【发布时间】:2021-08-05 15:46:56
【问题描述】:

我正在使用 ImageMagick 将许多 PDF 文件与 PNG 并行批量转换,例如

convert /my_path/my_pdf.pdf /my_path/output_directory/output.png

不幸的是,它使我的 /tmp 目录变得杂乱无章,正如一些关于堆栈溢出的错误票和问题中所报告的那样(请参阅 herehere)。更不幸的是,答案似乎总是像

创建一个 cron 作业来删除 /tmp 目录,基本上是在常规基础上运行 rm /tmp/magick-*

这种方法有两个问题:

  1. 它看起来很脏,我不知道何时调用它
  2. 如果我在每次转换调用后运行 rm /tmp/magick-*,我不确定它是否不会损害其他转换调用,因为我可能会删除另一个并行运行的进程仍需要的文件

ImageMagick 需要临时文件,因此我理想的解决方案是为每个 convert 调用指定一个唯一的临时目录,我将在调用后以编程方式清理它,而不会危及其他进程。

有没有办法做到这一点?还是在每次转换调用后简单地运行rm /tmp/magick-* 是否安全,因为临时文件在仍在使用时被锁定,因此可以随时调用这是一个安全的操作?

【问题讨论】:

    标签: python imagemagick


    【解决方案1】:

    我已经知道如何实际告诉 ImageMagick 的转换将临时文件放入 specific directory,所以我在 Python 中的解决方案看起来像这样(至少在 Linux 上运行时):

    from tempfile import TemporaryDirectory
    
    with TemporaryDirectory() as temporary_directory:
        subprocess.run(
            ["convert",
             "/path/to/my/file.pdf",
             "/path/to/my/output.png",
            env=dict(os.environ, TMPDIR=temporary_directory)
        )
    

    这可确保 ImageMagick 创建的所有临时文件在转换后都得到清理,即使convert 崩溃,我也不会留下任何东西。

    【讨论】:

    • 也可以使用MAGICK_TEMPORARY_PATH=temporary_directory作为环境变量。
    猜你喜欢
    • 1970-01-01
    • 2016-09-04
    • 2013-10-06
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    相关资源
    最近更新 更多