美文网首页
Nodejs gm模块简单使用记录

Nodejs gm模块简单使用记录

作者: lihao_李浩 | 来源:发表于2021-10-27 10:18 被阅读0次

一、图片尺寸调整

// 宽调整到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])
        })
})

相关文章

网友评论

      本文标题:Nodejs gm模块简单使用记录

      本文链接:https://www.haomeiwen.com/subject/mxwualtx.html