在附加图像时计算ImageMagick convert的主内存消耗

在附加图像时计算ImageMagick convert的主内存消耗,imagemagick,imagemagick-convert,Imagemagick,Imagemagick Convert,我使用ImageMagickconvert工具附加了几个PNG图像 convert -set colorspace RGB `ls *.png` -append outout.png 以下是输入文件的颜色参数: $ identify input1.png input1.png PNG 9600x1800 9600x7200+0+0 8-bit sRGB 355KB 0.000u 0:00.000 存在4个参数相同的输入文件 输出文件具有以下颜色参数: $ identify output.pn

我使用ImageMagick
convert
工具附加了几个PNG图像

convert -set colorspace RGB `ls *.png` -append outout.png
以下是输入文件的颜色参数:

$ identify input1.png
input1.png PNG 9600x1800 9600x7200+0+0 8-bit sRGB 355KB 0.000u 0:00.000
存在4个参数相同的输入文件

输出文件具有以下颜色参数:

$ identify output.png
output.png PNG 9600x7200 9600x28800+0+0 8-bit sRGB 2.461MB 0.000u 0:00.009
这是我使用的ImageMagick版本:

$ convert -version 
Version: ImageMagick 6.7.7-10 2014-04-09 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC
Features: OpenMP    

如何计算
转换的主内存消耗-追加
操作?

您似乎正在使用Q16版本的ImageMagick,而此版本的ImageMagick使用每像素16位通道(Q8版本使用每像素8位通道)。在ImageMagick 6中,每个像素每像素有4-5个通道(红色、绿色、蓝色、不透明度、索引),在ImageMagick 7()中,此行为将发生变化。由于您的输入和输出都是png文件,因此每像素使用4个通道,总计为每像素16*4=64位。因为您的输入图像是9600x1800,并且您要将其中的4个图像组合成一个图像,所以总共需要64*9600*1800*4=4423680000位/552.96 MB才能在内存中分配图像。但是,由于在创建输出图像时会创建每个图像的副本,因此您将需要两倍的内存:1.1 GB。

非常感谢您的回答!但我认为有两个错误。16*4=每像素64位,而不是48位。9600x28800只是页面几何信息。这是因为我在“转换-提取…”过程中忘记了“+repage”选项。真正的像素是9600x1800。我想(希望!)真正的像素才是最重要的。我发现了一些奇怪的东西。例如,当我附加四个分辨率为6400x1200的图像以创建分辨率为6400x4800的图像时,这应该需要6400x4800*64=1966080000位=>245760000字节。但实际上,我使用命令top观察到,转换过程在执行期间需要大约500 MB的主内存。为什么该过程需要大约两倍的主内存?我忘了在制作输出图像时会创建副本。我已经更新了我的答案。
/usr/bin/time-f“%M”转换-append out.png
maybe?如何使用time命令计算命令的内存消耗?time命令可以用来测量命令的执行时间和CPU时间,也可以测量峰值内存使用率。现在我了解到我需要安装“GNU time”(/usr/bin/time),它比“time”功能强大得多。谢谢!