Node.js批量给图片加水印的方法


Posted in Javascript onNovember 15, 2016

一、准备工作:

首先,你要阅读完这篇文章:https://3water.com/article/97391.htm。

然后,我们安装node.js的一个模块:imageinfo。

npm install imageinfo

二、直接上DEMO:

步骤如下:

step1:文件夹结构

Node.js批量给图片加水印的方法

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命令后,文件夹结构如下图

Node.js批量给图片加水印的方法

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

Node.js批量给图片加水印的方法

以上所述是小编给大家介绍的Node.js批量给图片加水印的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript的document对象和window对象详解
Dec 30 Javascript
js获取或设置当前窗口url参数的小例子
Oct 14 Javascript
控制台报错object is not a function的解决方法
Aug 24 Javascript
Javascript this 关键字 详解
Oct 22 Javascript
node.js中的Socket.IO使用实例
Nov 04 Javascript
JS实现方向键切换输入框焦点的方法
Aug 19 Javascript
Ionic默认的Tabs模板使用实例
Aug 29 Javascript
JS中setTimeout和setInterval的最大延时值详解
Feb 13 Javascript
从零学习node.js之搭建http服务器(二)
Feb 21 Javascript
解决vue 表格table列求和的问题
Nov 06 Javascript
JavaScript最完整的深浅拷贝实现方式详解
Feb 28 Javascript
JS前端可视化canvas动画原理及其推导实现
Aug 05 Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
Nov 15 #Javascript
AngularJS extend用法详解及实例代码
Nov 15 #Javascript
Windows系统下安装Node.js的步骤图文详解
Nov 15 #Javascript
jQuery checkbox选中问题之prop与attr注意点分析
Nov 15 #Javascript
javascript实现消灭星星小游戏简单版
Nov 15 #Javascript
js滚轮事件兼容性问题需要注意哪些
Nov 15 #Javascript
禁用backspace网页回退功能的实现代码
Nov 15 #Javascript
You might like
PHP一些有意思的小区别
2006/12/06 PHP
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
几个实用的PHP内置函数使用指南
2014/11/27 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
Nigma vs Alliance BO5 第二场2.14
2021/03/10 DOTA
javascript 用原型继承来实现对象系统
2010/03/22 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
node.js中的Socket.IO使用实例
2014/11/04 Javascript
jQuery中prependTo()方法用法实例
2015/01/08 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
ES6中Math对象新增的方法实例详解
2017/04/25 Javascript
JavaScript常用工具方法封装
2019/02/12 Javascript
跟老齐学Python之玩转字符串(1)
2014/09/14 Python
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
2019/07/15 Python
python使用dlib进行人脸检测和关键点的示例
2020/12/05 Python
曼联官方网上商店:Manchester United Direct
2017/07/28 全球购物
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
内部类的定义、种类以及优点
2013/10/16 面试题
一套Delphi的笔试题二
2013/05/11 面试题
SOA面试题:如何在SOA中实现松耦合
2013/07/21 面试题
成人大专自我鉴定范文
2013/10/19 职场文书
yy结婚证婚词
2014/01/10 职场文书
生日宴会策划方案
2014/06/03 职场文书
2014预备党员党课学习心得范文
2014/07/08 职场文书
出生医学证明书
2014/09/15 职场文书
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
领导干部群众路线个人对照检查材料思想汇报
2014/09/30 职场文书
护理实习生带教计划
2015/01/16 职场文书
承诺函格式模板
2015/01/21 职场文书
元宵节寄语大全
2015/02/27 职场文书
SONY AN-LP1 短波有源天线放大器图
2022/04/05 无线电