我们需要使用ImageMagick垂直附加两个非常大的TIF文件,但是由于我们试图在AWS Lambda上执行此操作,因此内存和磁盘资源非常有限。
我们目前在这里使用非常简单的方法...
magick convert image1.tif image2.tif -append result.tif
这可行,但是由于每个图像的大小,内存和磁盘消耗太高,我们遇到了资源问题。
ImageMagick有一个“流”命令(https://www.imagemagick.org/script/stream.php),但我找不到任何示例说明如何将其用于尝试做的事情。
我们尝试了其他方法,例如-limit选项,但是仍然遇到问题。如果可能的话,我试图确定如何使用“ stream”命令来完成此操作。我已经看到此用例建议使用“ stream”,但没有示例。
任何帮助都将不胜感激!
答案 0 :(得分:1)
我不是要进行测试的机器,但是我怀疑您可以使用vips
使用更少的内存和更少的时间来实现。
我认为您希望在命令行中使用它:
vips join input1.tif input2.tif result.tif vertical
添加最终参数--vips-leak
来检查已使用的总内存。
join
操作在此处记录:
http://libvips.github.io/libvips/API/current/libvips-conversion.html#vips-join
还有节点,PHP,Python,Ruby等绑定。
我创建了两个10,000x10,000像素的TIF文件,并对ImageMagick和vips进行了相同的追加操作:
ImageMagick: 11 seconds and 4.86GB memory used
vips: 4 seconds and 157 MB memory used