处理图片的时候会阻塞服务器,请教下,有什么好的解决方案么?
服务器需要将上传收到的几张图片进行裁剪并合成,用了jimp这个库,print绘制文本,和write保存图片到本地比较耗时,这个过程中服务器完全无法响应其他请求。
请教各位前辈,一般这种情况怎么处理好?还是说node服务器本身就不适合用来处理图片?
11 回复
处理图片这种要用到很多压缩算法,而且还占内存,明显不是nodejs擅长的,这种可以放到后台队列中处理 然后前端用ajax请求处理处理,服务器处理完成以后再返回最终图片的url
Jimp.loadFont(p).then(function (font) {
image.print(font, 5, 5, text);
image.write(dest);
console.log('Compose pics finished.');
cb(null, dest);
}).catch((err) => {
console.log(err);
cb(err);
});
image 是通过 new Jimp 生成的对象,p是字体路径。主要就是 print 和 write 耗时,看了下jimp的接口貌似也没说是异步还是同步,文档示例也是这样用的
@moshuqi 处理图片交给其他进程。通信可以基于http,需要对方包装一下对你提供接口。 或者直接node调用系统命令通信也行,http://www.cnblogs.com/zhoujie/p/nodejs2.html