Image magick:在 linux 服务器上花费了太多时间

Posted

技术标签:

【中文标题】Image magick:在 linux 服务器上花费了太多时间【英文标题】:Image magick: takes too much time at linux server 【发布时间】:2014-08-29 14:46:33 【问题描述】:

我遇到了 imagemagic 在我的服务器上执行命令所花费的时间问题。我还尝试将线程控制从 20(默认)设置为 1,但没有任何改进。

以下是我们在服务器上执行的一些命令和花费的时间。有什么办法可以减少这个执行时间?

    /usr/bin/convert source1.jpeg -resize 4518x3013!输出.png

    真正的 0m13.150s 用户 0m18.320s 系统 0m2.029s

    /usr/bin/convert output.png -crop 2408x3010+1053+0 +repagecropped.png

    真正的 0m5.978s 用户 0m5.043s 系统 0m0.881s

    /usr/bin/convert destination.png - 在 564,564+2408+3010 'cropped.png' output.png 上绘制图像

    真正的 0m10.085s 用户 0m11.160s 系统 0m1.710s


更新信息

identify -version 命令输出: 版本:ImageMagick 6.8.9-1 Q16 x86_64 2014-08-16 http://www.imagemagick.org 版权所有:版权所有 (c) 1999-2014 ImageMagick Studio LLC 特点:DPC OpenMP 代表: bzlib freetype gslib jng jpeg png ps tiff zlib

服务器配置: 操作系统版本为 centos 6 内存 32GB

source1.jpeg(link) 使用 -bench 5 执行的第一个命令并在输出下方返回。 性能[1]:5i 0.095ips 1.000e 90.970u 0:52.550 性能[2]:5i 0.104ips 0.522e 92.310u 0:48.110 性能[3]:5i 0.090ips 0.485e 93.420u 0:55.770 性能[4]:5i 0.086ips 0.474e 91.180u 0:58.230 性能[5]:5i 0.091ips 0.488e 94.850u 0:55.030 谢谢, 萨加尔

【问题讨论】:

Imagemagick 是如何安装在服务器上的?是否启用了 OpenMP 或 OpenCL 功能?请向我们展示identify -version 的输出,并在您的示例中使用-bench 10 选项运行相同的命令。 版本:ImageMagick 6.8.9-1 Q16 x86_64 2014-08-16 imagemagick.org 版权所有:版权所有 (C) 1999-2014 ImageMagick Studio LLC 功能:DPC OpenMP 代表:bzlib freetype gslib jng jpeg png ps tiff zlib SERVER Os 版本为 centos 6 RAM: 32 GB 多次调用 imagemagick 会导致中间步骤的多次不必要的编码和解码。如果您编写一个小程序来一次完成所有操作,它应该会快得多。 为什么要将非整数大小传递给-resize?当您不告诉我们原始图像有多大时,告诉我们裁剪/调整图像大小需要多长时间有什么意义?所有步骤都是一个更大的处理链的一部分吗?如果是这样,您最好使用更长的命令,一次完成所有操作 - 或使用 MPC - Magick Pixel Cache。你真的是从命令行运行的,还是你的系统实际上是用 Perl 或 php 编写的,或者可以使用 ImageMagick 绑定而不是分叉和执行的东西?你可以为中间文件制作一个 RAMdisk 吗? 当我们不知道是 Raspberry Pi 还是 16 核服务器时,谁能说您的系统是否运行缓慢?可以降低质量设置吗? 8 位量化是否足够好(Q8 与 Q16)? 【参考方案1】:

这会让你更快吗?

convert input.png -quality 80% -resize 4518x3013! \
    \( +clone -crop 2408x3010+1053+0 +repage \) \
    -geometry +564+564 -composite output.png

【讨论】:

是的,它减少了 50% 的时间,但我们不想降低图像质量。我们想保持图像的原始质量。我知道在 PC 上有时几乎看不到 80-90% 的质量差异。但是在大卡瓦上打印后,它变得更加明显。我们希望保持用户上传的照片的原始质量。 如果把质量改成80-90%呢?【参考方案2】:

对于真正快速的 PNG 书写,绘图使用 -quality 10,照片使用 -quality 11。这应该会将您的 PNG 编写时间缩短五倍。

“质量”数字在编写 PNG 时不会影响图像质量。它只影响压缩效果。

【讨论】:

嗨格伦,最有趣的!请在任何地方对此进行解释或记录吗? @MarkSetchell,是的,请参阅 imagemagick.org/script/command-line-options.php#quality (您可以通过选择选项从 www.imagemagick.org 主页找到 -quality )。顺便说一句,该页面提到 -quality 0 以获得最快的压缩,但现在似乎恢复为缓慢的默认质量。

以上是关于Image magick:在 linux 服务器上花费了太多时间的主要内容,如果未能解决你的问题,请参考以下文章

闪亮的 Flexdashboard 中的 image_composite (Magick) 返回错误

在 R 上使用 Magick 编写多个图像

使用Image Magick转换图像并显示结果

使用 Image Magick 进行图像压缩 mogrify 问题

R语言使用magick包的image_write函数将已有图像以任何指定的格式导出保存到磁盘上(例如将原文将从png转化为jpeg)

将 Magick::Image 转换为 cv::Mat