我有一个Node.js服务器(无关),该服务器使用ImageMagick进行图像处理。基本上,我可以将映像发布到服务器,它将以转换后的映像进行响应。
现在,我只是将POSTed图像写入文件,并启动ImageMagick作为子进程,该子进程将转换后的图像写入新文件,然后将新文件发送到POSTer。我想避免写入磁盘以加快速度。这个ImageMagick进程可以接受流输入并给我一个流作为输出吗?
例如,这是我现在使用的最复杂的命令之一:
/usr/local/opt/imagemagick/bin/convert \( '/Users/shawn/Work/vigour-img/originals/7ajy06' -resize '150x150^' -gravity 'Center' -crop '150x150+0+0' \) \( '/Users/shawn/Work/vigour-img/images/avatarMask.png' -resize '150x150' -gravity 'Center' \) -compose 'CopyOpacity' -composite '/Users/shawn/Work/vigour-img/out/1bl6jm9.png'
这依赖于/Users/shawn/Work/vigour-img/originals/7ajy06
与/Users/shawn/Work/vigour-img/images/avatarMask.png
现有的磁盘,并将结果来/Users/shawn/Work/vigour-img/out/1bl6jm9.png
。
相反,如果我可以流处理输入文件并以流的形式获取结果,则无需写入磁盘,从而极大地提高了性能(我认为)。
我不知道,写入文件并读取该文件并通过http发送该文件似乎比直接写入http响应的时间更长。在这两种情况下,ImageMagich都会在内存中保留整个图像一段时间(除非我用
—
肖恩2015年
stream
你提到的这个命令)。写入文件或写入http响应应该几乎相同...至于stream
命令,我不清楚在我的情况下如何使用它。我将花更多的时间在此上并尝试一下。谢谢你的提示。
stream
命令,该命令可能会帮助此过程的某些方面。