gpt4 book ai didi

php - ImageMagick 多次转换同一张图片?

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

我注意到在使用 ImageMagick 调整某些照片大小时我的服务器变慢了。执行 htop 显示有多个类似的 convert 命令 (7) 在同一图像上同时执行。这对 ImageMagick 来说是正常的,还是我的代码以某种方式在同一图像上多次执行 Imagemagick 的 convert

我正在使用 ImageMagick ImageMagick 6.7.9-6 2012-09-18

enter image description here

转换 --version

Version: ImageMagick 6.7.9-6 2012-09-18 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC
Features: OpenMP

附加信息

  • CentOS 6.3 i686系统上有16个内核。
  • 典型的输入图像文件大约为 10-100KB。
  • 重复(不仅仅是相似)命令的数量在 2-16 之间。

记录

日志显示没有重复调用 convert 来两次调整同一图像的大小。

最佳答案

要对此进行调试,需要更多详细信息。

  • “...几个类似的同时转换命令...”:“几个”到底是多少?!

  • 这个系统有多少 CPU(内核)?

  • 到底有多“相似”,这种相似中有什么不同?!

  • 这些相似命令之间的parent:child 关系是什么?! (pstree 命令)

  • 您的典型输入图像有多大?!

请同时报告 convert -version 的完整输出。

这似乎是一个网络服务,从屏幕截图中可以看到的输入 JPEG 的目录猜测。 *您确定每次上传时网络服务都不会启动多个转换命令吗? -- 您确定网络客户端没有为每个要转换的图像多次联系网络服务吗?*


更新:

如果您的 convert -version 报告为一项功能 OpenMP,那么您的 ImageMagick 是多线程的,使其能够同时运行多个线程来处理一个大图像。在处理大型 图像文件时,这可以大大提高效率。 (但如果您处理许多小文件,它也会大大降低整体性能...)

我的猜测是您在 htop 输出中看不到多个 (16) 个并发 进程,而是多个 (16) 个并发执行 线程.

对于处理小文件的典型用例,您应该通过设置此环境变量禁用自动多线程来尝试:

MAGICK_THREAD_LIMIT=1

您还可以基准测试您的 ImageMagick 命令以接近要使用的最佳线程数。添加-bench iterations打印特定命令的一个或多个线程的运行时间和效率:

convert                                        \
-bench 40 \
/home/photos/public_html/2012/0926/some.jpg \
-resize 300 \
null:

您的 ImageMagick 6.7.9 能够在对命令进行基准测试时应用渐进式线程。 (在非 OpenMP 安装中使用 -bench 进行测试没有多大意义...)

另见 this discussion in the official ImageMagick forum .

关于php - ImageMagick 多次转换同一张图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12606294/

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