栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将2张图片与node.js合并?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将2张图片与node.js合并?

我用过:

https://github.com/learnboost/node-
canvas

做类似的事情(动态地从组件构建合成图像)。

效果很好。

这是一些示例代码:

var Canvas = require('canvas'),  fs = require('fs'),  Image = Canvas.Image;var _components = [{prefix:'f', count:12},        {prefix:'h', count:12},        {prefix:'i', count:12},        {prefix:'m', count:12}];var _total = 1;for (var i=_components.length - 1; i>=0; i--){  _components[i].mult = _total;  _total *= _components[i].count;}module.exports.ensureImageExists = function(img, cb){  fs.stat(__dirname + '/../public/images/rb/' + img, function(err, stats){    if (err){      if (err.pre == 'ENOENT')        generateImage(img, cb);      else        cb(err);    }    else{      cb();    }  });}function generateImage(name, cb){  var re = /rb([0-9]*).png/  var num = parseInt(re.exec(name)[1]) % _total;  var parts = [];  for (var i=0; i<_components.length; i++){    var n = Math.floor(num / _components[i].mult);    parts.push(_components[i].prefix + (n + 1));    num -= n * _components[i].mult;  }  var canvas = new Canvas(45, 45),   ctx = canvas.getContext('2d');  drawParts();  function drawParts(){    var part = parts.shift();    if (!part)      saveCanvas();    else {      var img = new Image;      img.onload = function(){        ctx.drawImage(img, 0, 0, 45, 45);        drawParts();      };     img.src = __dirname + '/components/' + part + '.png';    }  }  function saveCanvas(){    canvas.toBuffer(function(err, buf){      if (err)        cb(err);      else        fs.writeFile(__dirname + '/../public/images/rb/' + name, buf, function(){          cb();        });    });  }}

在这种情况下,将根据图像的名称选择组件,但是显然可以这样做。另外,我想您可以根据需要将图像流式传输出去-我将其写入文件,以便下次请求时可用。

我输入了这样的路线来处理这一代:

app.get('/images/rb/:img', requireLogin, function(req, res, next){  //first make sure image exists, then pass along so it is handled  //by the static router  rbgen.ensureImageExists(req.params.img, function(err){    next();  })});


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/448704.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号