--所需模块
生成二维码模块 qr-image
处理图片模块 images
安装模块 npm install async qr-image images
--封装方法
1.生成二维码方法
2.嵌入水印方法
utlis.js
var utils = {};
var fs = require('fs');
var qr = require('qr-image');
var images = require("images");
/**
* 根据地址生成二维码
* 参数 url(string) 地址
* 参数 callback(Function)
*/
utils.createQr = function(url, callback){
var qr_png = qr.image(url, { type: 'png',size : 6 });
var imgName = +(new Date())+''+Math.ceil(Math.random()*89+10);
imgName = `${imgName}.png`;
var qr_pipe = qr_png.pipe(fs.createWriteStream(imgName));
qr_pipe.on('error', function(err){
console.log(err);
callback(err,null);
return;
})
qr_pipe.on('finish', function(){
callback(null,imgName);
})
};
/**
* 给图片添加水印
* 参数 sourceImg(string) 原图片路径
* 参数 waterImg(string) 水印图片路径
* 参数 callback(Function)
*/
utils.addWater = function(sourceImg, waterImg, callback){
var lastput = "2.jpg";
images(sourceImg) //Load image from file
//加载图像文件
.size(400) //Geometric scaling the image to 400 pixels width
//等比缩放图像到400像素宽
.draw(images(waterImg), 70, 260) //Drawn logo at coordinates (70,260)//为了遮住不该看的东西..
//在(10,10)处绘制Logo
.save(lastput, { //Save the image to a file,whih quality 50
quality : 50 //保存图片到文件,图片质量为50
});
callback(lastput);
};
module.exports = utils;
--测试代码
test.js
var utils = require('./utils');
var async = require('async');
var task1 = function(callback){
var url = 'http://www.baidu.com';
utils.createQr(url,function(err, data){
if(err){
console.log(err);
callback(err, null);
return;
}
callback(null,data);
})
};
var task2 = function(waterImg, callback){
//原图
var sourceImg = '1.jpg';
utils.addWater(sourceImg, waterImg, function(data){
callback(null, data);
})
};
async.waterfall([task1,task2], function(err, result){
if(err){
console.log(err);
return;
}
console.log(result);
})
--运行
原图片 1.jpg
-----运行 node test
生成的二维码图片 147729475591626.png
最终生成的图片 2.jpg
哈哈,挡住了..,用手机扫一扫会跳转到百度.
最后今天是1024,程序员的节日,祝大家节日快乐!!
光顾着看妹子了..最后发下文件夹结构...
意外金喜的博客 : http://blog.csdn.net/zzwwjjdj1/