Node.js 图像处理

1、下载图像

var request = require('request');
var fs = require('fs');
var images = require("images");
PNG = require('pngjs').PNG;

function savedImage(url, filename) {
        request(url).pipe(fs.createWriteStream(filename));
}

var url1 = "https://6c62-lbs-f8c394-1252842602.tcb.qcloud.la/my-image.png?sign=9faa85374df48eeead00fdf8da944c4c&t=1540044672"
var file1 = "./file1.png"
savedImage(url1, file1);

var url2 = "https://6c62-lbs-f8c394-1252842602.tcb.qcloud.la/location.png?sign=3b11636452eada2921d5ba55c769137c&t=1540045035"
var file2 = "./file2.png"
savedImage(url2, file2);

2、图像圆裁剪

var request = require('request');
var fs = require('fs');
var images = require("images");
PNG = require('pngjs').PNG;

var input = "file1.png"
var radius = 20

fs.createReadStream(input)
    .pipe(new PNG({filterType: 4}))
    .on('parsed', function() {
        if (this.height > this.width) {
                radius = this.width/2;
        }else{
                radius = this.height/2;
        }
        for (var y = 0; y < this.height; y++) {
            for (var x = 0; x < this.width; x++) {
                var idx = (this.width * y + x) << 2;
                if (Math.pow(x-radius,2) + Math.pow(y-radius,2) > Math.pow(radius,2)) {
                    this.data[idx+3] = 0;
                }
            }
        }
        this.pack().pipe(fs.createWriteStream(input));
        //callback(null, param);
});

3、合并图

var request = require('request');
var fs = require('fs');
var images = require("images");

var file1 = "./file1.png"
var file2 = "./file2.png"
//var image1 = images(file2)
var image1 = images(file2)
var image2 = images(file1)

var height2 = image2.height()
var width2 = image2.width()
var c = width2
if (c > height2) {
        c = height2
}
var image3 = images(image2,0,0,c,c)
image3.save("file1_1.png")

image1.size(25, 48);
image3.resize(20, 20);
image3.save("file1_2.png")
image1.draw(image3, 2, 2).save("output.png", {quality:100});

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值