nodejs转换图片报: this most likely means the gm/convert binaries can't be found 错误
背景
通过nodejs自定生成图片,在图片上面绘制上 日期
和 星期
;
其中用到了 gm
依赖,因此需要安装GraphicsMagick或者ImageMagick
index.js 代码如下:
const gm = require('gm').subClass({imageMagick: true})
const moment = require('moment');
var datetime = moment().format("YYYY年MM月DD日");
var datetime2 = moment().format("YYYY-MM-DD");
var basePath="/opt/test/"
gm(basePath+"/tmp.png") //指定添加水印的图片
.stroke("#EFF6EC") //字体外围颜色
.fill("#EFF6EC") //字体内围颜色(不设置默认为黑色)
.font(basePath+"/FZYTK.TTF",60)
.drawText(630,180,getWeek())
.font(basePath+"/FZYTK.TTF",35)
.drawText(640,240,datetime)
.write(basePath+"/icon-"+datetime2+".png", function (err) {
console.log(err)
if (!err) console.log('ok');
else console.log(err);
});
function getWeek() { // 参数时间戳
let week = moment().day()
switch (week) {
case 1:
return '星期一'
case 2:
return '星期二'
case 3:
return '星期三'
case 4:
return '星期四'
case 5:
return '星期五'
case 6:
return '星期六'
case 0:
return '星期日'
}
}
安装ImageMagick和GraphicsMagick
ImageMagick
-
安装基础依赖
yum install -y tcl-devel libpng-devel libjpeg-devel ghostscript-devel bzip2-devel freetype-devel libtiff-devel
-
下载
https://www.imagemagick.org/download/ImageMagick.tar.gz
-
解压
tar -zxvf ImageMagick.tar.gz
-
安装
./configure make && make install ldconfig /usr/local/lib
-
测试
convert -version
GraphicsMagick
-
安装基础依赖
yum install -y libpng libjpeg libpng-devel libjpeg-devel ghostscript libtiff libtiff-devel freetype freetype-devel jasper jasper-devel
-
下载最新版
wget ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/GraphicsMagick-LATEST.tar.gz
-
解压
tar GraphicsMagick-LATEST.tar.gz
-
进入目录
这里可能你下载的版本和我这里不一样,解压后,根据自己的目录进入cd GraphicsMagick-1.3.38
-
安装
./configure make make install
-
测试
gm version
建立软连接
注意:这里很重要,我的坑就是掉这里;直接执行node生成的时候是可以的,一旦通过定时任务去执行的时候,就会报找不到gm的错误
ln -s /usr/local/bin/gm /usr/bin/gm
ln -s /usr/local/bin/convert /usr/bin/convert
问题
正常手动执行node命令生成,就没有问题,能正常生成
node index.js
但是,一旦通过定时任务去执行的时候
就会报找不到gm/convert: this most likely means the gm/convert binaries can't be found
解决方式
-
问题一;ImageMagick和GraphicsMagick没有安装成功
这个问题,可以根据上面的安装流程进行确认 -
问题二,没有建立软连接
我遇到的就是这个情况,软件都安装成功,直接执行时可以正常,唯独定时任务执行时无法成功
最后在这里找到了解决方式:https://github.com/aheckmann/gm/issues/455 需要建立软连接ln -s /usr/local/bin/gm /usr/bin/gm ln -s /usr/local/bin/convert /usr/bin/convert
建立成功之后,就能通过定时任务的方式去生成图片了;

标题:nodejs转换图片报: this most likely means the gm/convert binaries can't be found 错误
作者:码霸霸
地址:https://lupf.cn/articles/2021/06/06/1622955676302.html