一、图片尺寸调整
// 宽调整到100,高自适应
.resize(100,null)
// 高调整到100,宽自适应
.resize(null,100)
// 宽高都设置为100, 强制不考虑宽高比
.resize(100,100,'!')
// 图片长边到1080 短边两边不足的填充白色
.command('convert')
.in('-thumbnail','1080x1080')
.in('-background','#FFFFFF')
.in('-gravity', 'center')
.in('-extent', '1080x1080')
.write(outFilePath1080, ()=>{})
// 图片两边到1080 超出裁剪 (优先将短边调整到1080,长边肯定会超过1080,超出的就会上下同时裁剪)
.command('convert')
.in('-thumbnail','1080x1080^')
.in('-gravity', 'center')
.in('-extent', '1080x1080')
.write(outFilePath1080, ()=>{})
二、图片添加logo
// 在图片x,y坐标为35,35的地方添加一个宽为210,高为113的logo图片
.draw(`image Over 35, 35, 210, 113 "${logoPath}"`)
三、图片添加文字
// 在图片x,y坐标为35,35的地方添加Hello world! 字体为impact 字体大小12
.font(path.join(__dirname, '../../static/impact.ttf'), 12)
.drawText(35, 35, "Hello world!")
四、其它
var gm = require('gm')
var { chunk, flatten } = require('lodash')
// 加载图片
gm(filepath)
// 品质为1-100 1为品质最低
.quality(60)
// 灰度图 并转换为png 返回图片 buffer数据 结合pngjs将会有更多的操作空间
.colorspace('GRAY').toBuffer("PNG", function (err, buf) {
let str = new PNG({
// colorType: 0
filterType: 4
});
str.end(buf);
str.on("parsed", function (buffer) {
var colorPoints = [];
// 可获取每个点的色值
for (var y = 0; y < this.height; y++) {
var arr = buffer.slice(this.width * 4 * y, this.width * 4 * y + this.width * 4);
var chunkArr = chunk(arr, 4)
colorPoints.push(chunkArr)
}
// 打印图片35,35点的色值
console.log(colorPoints[34][34])
})
})
网友评论