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 相关文章推荐
jquery 子窗口操作父窗口的代码
Sep 21 Javascript
再次分享18个非常棒的jQuery表格插件
Apr 10 Javascript
jquery限定文本框只能输入数字即整数和小数
Nov 29 Javascript
浅析JavaScript中的delete运算符
Nov 30 Javascript
jquery垂直公告滚动实现代码
Dec 08 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
Jan 23 Javascript
JS 对java返回的json格式的数据处理方法
Dec 05 Javascript
Vue中android4.4不兼容问题的解决方法
Sep 04 Javascript
关于vue-cli 3配置打包优化要点(推荐)
Apr 22 Javascript
使用React手写一个对话框或模态框的方法示例
Apr 25 Javascript
小程序云开发如何实现图片上传及发表文字
May 17 Javascript
Vue+Java+Base64实现条码解析的示例
Sep 23 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一句话cmdshell新型 (非一句话木马)
2009/04/18 PHP
PHP中把对象数组转换成普通数组的方法
2015/07/10 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
prototype 1.5 &amp; scriptaculous 1.6.1 学习笔记
2006/09/07 Javascript
javascript 模式设计之工厂模式学习心得
2010/04/27 Javascript
Jquery 自定义动画概述及示例
2013/03/29 Javascript
js传中文参数controller里获取参数乱码问题解决方法
2014/01/03 Javascript
JS实现的网页倒计时数字时钟效果
2015/03/02 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
解决ajax不能访问本地文件问题(利用js跨域原理)
2017/01/24 Javascript
js实现带三角符的手风琴效果
2017/03/01 Javascript
JS实现简单短信验证码界面
2017/08/07 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
vue基础之v-bind属性、class和style用法分析
2019/03/11 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
详解使用JWT实现单点登录(完全跨域方案)
2019/08/02 Javascript
[41:54]2018DOTA2亚洲邀请赛 4.1 小组赛A组加赛 TNC vs Liquid
2018/04/03 DOTA
跟老齐学Python之做一个小游戏
2014/09/28 Python
利用pandas读取中文数据集的方法
2018/07/25 Python
基于python实现学生信息管理系统
2019/11/22 Python
Django ModelForm操作及验证方式
2020/03/30 Python
python logging 重复写日志问题解决办法详解
2020/08/04 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
Python爬虫代理池搭建的方法步骤
2020/09/28 Python
python中remove函数的踩坑记录
2021/01/04 Python
html5使用canvas画三角形
2014/12/15 HTML / CSS
会计毕业自我鉴定
2014/02/05 职场文书
年度优秀员工获奖感言
2014/08/15 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
2015年教师国培感言
2015/08/01 职场文书
Python如何把不同类型数据的json序列化
2021/04/30 Python
OpenCV 图像梯度的实现方法
2021/07/25 Python
MySQL优化之慢日志查询
2022/06/10 MySQL