有些Node应用涉及图像的简单处理(信息获取、调整大小、转码等),去网上搜索,一般会推荐使用第三方库 gm
。
gm实际上是利用child_process调用GraphicsMagick软件。在高频率调用时,会高频率地启动和退出软件,造成相当大的非必要性能消耗。
这里推荐第三方图像处理库 sharp
。这个库本身使用了C编写的libvips图像处理库,处理速度比gm快4、5倍,且其通过C++ addons方式整合进node中,调用消耗可以忽略不计。
但sharp本身不支持输出gif格式。建议在代码中,根据需求选择不同方案:
- 图像读取、获取metadata(维度、格式等): sharp
- 图像简单处理和输出(jpg/png/webp/tiff):sharp
- 图像简单处理和输出(gif等):gm
- 图像维度获取: image-size
- 网络图像维度获取(不用下载): http-image-size
网友评论