Node.js实现将文字与图片合成技巧( 二 )

2. 合并图形
用于合并图片的库有很多,比如gm、jimp、mapnik、sharp等,其中sharp是基于libvips库来实现的,性能是最高的,所以我采用了sharp来合并图形 。
let textSVG = Buffer.from(textSVG);let bgPath = path.join(__dirname, './img/bg.jpg');let targetPath = path.join(__dirname, '../dist/bg.jpg');sharp(bgPath).composite([{        input: textSVG,        gravity: 'center'    }]).toFile(targetPath);sharp库注意事项

  1. 因为libvips是基于c++实现的,所以sharp库需要基于C++源代码进行编译构建后才能使用 。node-gyp是为node编译C++扩展的时候使用的编译工具,但是node-gyp依赖Python和VC++构建工具来进行编译 。所以需要先安装python 和 VC++ 环境 。最简单的方式就是顺序执行下面安装命令:
// 安装构建环境python、vc++npm install --global --production windows-build-tools// 安装node-gyp 编译工具npm install --global node-gyp// 安装sharpnpm install sharp
  1. 官方文档中,用sharp合并图像时,给出的api是 overlayWith,但是你会发现,这个api并不存在 。这个是因为sharp最新版本0.23.3删除了overlayWith,用composite进行了替换 。
至此,我们就实现了一个简单的生成公众号封面图片的功能,让我们看看生成效果:
Node.js实现将文字与图片合成技巧

文章插图
 
总结程序可以帮助我们干重复的事情,提高我们的生产力,如果程序员写的代码都用于解决自己生活中遇到的问题,对程序员无疑是巨大的动力源泉 。

【Node.js实现将文字与图片合成技巧】


推荐阅读