nodejs根据地址生成二维码并当做水印嵌入图片中

58 篇文章 16 订阅
57 篇文章 34 订阅

--所需模块

生成二维码模块 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/
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值