【问题标题】:Imagemagick convert ultra slowImagemagick 转换超慢
【发布时间】:2021-11-02 15:43:06
【问题描述】:

我正在尝试优化 8 秒/1.1 mb gif,在我的 Mac 上花费了超过 5 分钟,但没有完成,我只是中止了。

convert ep.gif -coalesce -layers Optimize ep-optimized.gif

资源

>>> convert -list resources
Resource limits:
  Width: 461.169PP
  Height: 461.169PP
  Area: 17.1799GP
  List length: unlimited
  Memory: 8GiB
  Map: 16GiB
  Disk: unlimited
  File: 192
  Thread: 4
  Throttle: 0
  Time: unlimited

【问题讨论】:

  • gif 的尺寸有多大?解压缩后,您的整个动画可能会大于您的 RAM 分配。 convert -list resource 告诉你什么?您是否有足够的 RAM 来存储全部加载到内存中的帧数? ImageMagick 将尝试加载整个 8 秒的帧,然后写入相同数量的帧。它们不是一次一帧地读取和处理的。
  • 当您的 RAM 用完时,ImageMagick 会分页到磁盘,这会慢得多。如果您不在共享服务器上,则可以编辑 ImageMagick policy.xml 文件以将 RAM 分配增加到您可用 RAM 的数量限制。
  • gif 尺寸为1644 × 810,我编辑了问题以包含convert -list resource 的输出。

标签: performance imagemagick gif


【解决方案1】:

如果您的 ImageMagick 在 Q8 编译,则视频的一帧为 1644x810x3 字节,即 4MB。您可以检查:

magick identify -version
Version: ImageMagick 7.1.0-5 Q16 x86_64 2021-08-22 https://imagemagick.org

你可以看到我的是 Q16,所以现在每帧是 8MB。

您的 GIF 有 521 帧,因此您的最低 RAM 要求(仅用于加载图像而不是开始创建输出图像)是:

1644x810x3x2x521 = 4GB

检查我机器上的内存使用情况,我得到:

/usr/bin/time -l magick ep.gif -coalesce -layers Optimize ep-optimized.gif

  190.22 real      1568.54 user       102.18 sys
     17268342784  maximum resident set size        <--- 17 GB !!!
               0  average shared memory size
               0  average unshared data size
               0  average unshared stack size
        11073112  page reclaims
              14  page faults
               0  swaps
               0  block input operations
               0  block output operations
               0  messages sent
               0  messages received
               0  signals received
               1  voluntary context switches
        15028430  involuntary context switches
   4523216162264  instructions retired
   6123562866718  cycles elapsed
     17278709760  peak memory footprint

我认为你要么需要:

  • 重新编译 Q8 版本的 ImageMagick,或
  • 分配更多 RAM(如果有的话),或者
  • 以较低的分辨率或帧速率为目标,或
  • 考虑使用其他格式 - 例如视频。

【讨论】:

  • 通过检查magick --version,它是Q16,就像你的一样,看起来它目前默认安装在最近的版本中。我卸载并重新构建了Q8 版本,它现在显示ImageMagick 7.1.0-7 Q8-HDRI x86_64。我尝试再次优化 gif,问题仍然存在可能是因为我的内存有限8 GB
  • 还有其他工具 - gifsicle 可能吗?
猜你喜欢
  • 1970-01-01
  • 2012-09-15
  • 2015-09-15
  • 1970-01-01
  • 1970-01-01
  • 2015-05-28
  • 2014-02-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多