zoukankan      html  css  js  c++  java
  • 如何用node.js批量给图片加水印

    上一篇我们讲了如何用node.js给图片加水印,但是只是给某一张图片加,并没有涉及到批量处理。这一篇,我们学习如果批量进行图片加水印处理。

    一、准备工作:

    首先,你要阅读完这篇文章:http://www.yuanbo88.com/article.php?rid=31
    然后,我们安装node.js的一个模块:imageinfo

    npm install imageinfo
    



    二、直接上DEMO:

    步骤如下:
    step1:文件夹结构


    step2:JS代码

    //引用文件系统模块
    var fs = require("fs");
    //引用imageinfo模块
    var imageInfo = require("imageinfo");
    //引用images模块
    var images = require('images');
    var watermarkImg = images('water_logo.png');
    
    function readFileList(path, filesList) {
        var files = fs.readdirSync(path);
        files.forEach(function (itm, index) {
            var stat = fs.statSync(path + itm);
            if (stat.isDirectory()) {
            	//递归读取文件
                readFileList(path + itm + "/", filesList)
            } else {
                var obj = {};//定义一个对象存放文件的路径和名字
                obj.path = path;//路径
                obj.filename = itm//名字
                filesList.push(obj);
            }
        })
    }
    var getFiles = {
    	//获取文件夹下的所有文件
        getFileList: function (path) {
            var filesList = [];
            readFileList(path, filesList);
            return filesList;
        },
        //获取文件夹下的所有图片
        getImageFiles: function (path) {
            var imageList = [];
    
            this.getFileList(path).forEach((item) => {
                var ms = imageInfo(fs.readFileSync(item.path + item.filename));
    
                ms.mimeType && (imageList.push(item.filename))
            });
            return imageList;
        }
    };
    
    //获取文件夹下的所有图片
    var photos = getFiles.getImageFiles("./public/");
    for (var i = 0; i < photos.length; i++) {
    	var sourceImg = images('./public/'+photos[i]);
    	var sourceImgName = photos[i];
    	var sWidth = sourceImg.width();
    	var sHeight = sourceImg.height();
    	var wmWidth = watermarkImg.width();
    	var wmHeight = watermarkImg.height();
    	images(sourceImg)
    		// 设置绘制的坐标位置,右下角距离 40px
    		.draw(watermarkImg, sWidth - wmWidth - 40, sHeight - wmHeight - 40)
    		// 保存格式会自动识别
    		.save('./saveImg/'+ sourceImgName+'');
    }
    

    step3:运行node命令后,文件夹结构如下图


    step4:查看批量加水印的图片




  • 相关阅读:
    .emacs
    boost 程序库完全开发指南_ch3_memory_manager
    C++ 友元函数
    AutoHotKey.ini
    QQ因系统日期无法打开
    SharePoint 2007中如何更改用戶基本資料(EMail地址)
    盗版Windows XP如何安装IE7
    三人行,必有我師學會了家中布線ADSL上網
    以數據源方式讀取文本文件連接串及注事事項
    网络访问时you might not have permission to use this network resource错误解决方法
  • 原文地址:https://www.cnblogs.com/yuanbo88/p/6065724.html
Copyright © 2011-2022 走看看