使用单个图像读取/stream的多个大小调整

我正在写一个脚本,需要一个图像,并创build不同大小的多个变体(如imgur,基本上)。 现在,我使用node.js中的https://github.com/aheckmann/gm为每个变体进行以下操作:

function(file, size, newfile, callback) { gm(file) .noProfile() .quality(80) .resize(size, size) .write(newfile, callback) } 
  1. 我假定每次调整图像大小时,graphicsmagick都会从磁盘读取图像并将其加载到内存中。 它是否正确? 如果是这样,我怎样才能从磁盘只读一次?
  2. 我可以从stream中读取文件,然后在单个stream上运行多个大小调整吗? 我对stream的了解不够多,而当我最后一次尝试时,我感到沮丧,放弃了,并删除了那部分代码。

这里有两个命令行的例子,如何与ImageMagick做到这一点。

它们使用ImageMagick支持的mpr:语法,它告诉ImageMagick将input图像临时保存到一个已命名的内存程序寄存器中 ,以后(在处理过程中)读取数据比从硬盘上读取数据要快得多。

  • 用ImageMagick分割图像
  • 使用ImageMagick高效生成缩略图并进行转换

应该很容易将这些命令行转换为node.js的说法。