gpt4 book ai didi

linux - ImageMagick:如何在调整大量图像文件大小时实现低内存使用?

转载 作者:IT王子 更新时间:2023-10-29 00:20:33 27 4
gpt4 key购买 nike

我想调整大量(大约 5200 个)图像文件(PPM 格式,每个大小为 5 MB)的大小,并使用 convert 将它们保存为 PNG 格式。

简短版:

convert 会占用 24 GB 的内存,尽管我使用的语法告诉 convert 连续处理图像文件。

长版:

关于超过 25 GB 的图像数据,我认为我不应该同时处理所有文件。我搜索了有关如何连续处理图像文件的 ImageMagick 文档,然后我 found :

It is faster and less resource intensive to resize each image it is read:

$ convert '*.jpg[120x120]' thumbnail%03d.png

此外,the tutorial states :

For example instead of...

montage '*.tiff' -geometry 100x100+5+5 -frame 4 index.jpg

which reads all the tiff files in first, then resizes them. You can instead do...

montage '*.tiff[100x100]' -geometry 100x100+5+5 -frame 4 index.jpg

This will read each image in, and resize them, before proceeding to the next image. Resulting in far less memory usage, and possibly prevent disk swapping (thrashing), when memory limits are reached.

因此,这就是我正在做的:

$ convert '*.ppm[1280x1280]' pngs/%05d.png

根据文档,它应该一个接一个地处理每个图像文件:读取、调整大小、写入。我在一台有 12 个真实内核和 24 GB RAM 的机器上执行此操作。但是,在前两分钟内,convert 进程的内存使用率增长到大约 96%。它在那里停留了一段时间。 CPU 使用率达到最大值。再长一点,进程就死了,只是说:

Killed

此时,尚未生成任何输出文件。我在 Ubuntu 10.04 上,convert --version 说:

Version: ImageMagick 6.5.7-8 2012-08-17 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2009 ImageMagick Studio LLC
Features: OpenMP

看起来 convert 尝试在开始转换之前读取所有数据。因此,要么 convert 中存在错误,要么文档有问题,要么我没有正确阅读文档。

怎么了?如何在调整大量图像文件大小时实现低内存使用率?

顺便说一句:一个快速的解决方案是使用 shell 循环文件并为每个文件独立调用 convert。但我想了解如何使用纯 ImageMagick 实现相同的效果。

谢谢!

最佳答案

如果不能直接访问您的系统,就很难帮助您进行调试。

但是您可以做三件事来帮助自己缩小这个问题的范围:

  1. 添加 -monitor 作为第一个命令行参数,以查看有关正在发生的事情的更多详细信息。

  2. (可选)添加 -debug all -log "domain: %d+++ event: %e+++ function: %f+++ line: %l+++ module: % m+++ processID:%p+++ realCPUtime:%r+++ wallclocktime:%t+++ userCPUtime:%u\n\r"

  3. 暂时不要使用“*.ppm[1280x1280]”作为参数,而是使用“a*.ppm[1280x1280]”。目的是将您的通配符扩展(或实现相同目的的其他一些合适的方式)限制为仅几个匹配项,而不是所有可能的匹配项。

如果您执行“2”。你需要做“3”。否则你会被大量的输出所淹没。 (此外,您的系统似乎无法在不必终止进程的情况下处理完整的通配符...)

如果你没有找到解决方案,那么......

  1. ...在the official ImageMagick bug report forum注册一个用户名.
  2. ...在那里报告您的问题,看看他们是否可以为您提供帮助(如果您有礼貌地询问,这些人会相当友好且 react 迅速)。

关于linux - ImageMagick:如何在调整大量图像文件大小时实现低内存使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12352587/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com