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 相关文章推荐
用JS判断IE版本的代码 超管用!
Aug 09 Javascript
读jQuery之十四 (触发事件核心方法)
Aug 23 Javascript
jquery中EasyUI使用技巧小结
Feb 10 Javascript
javascript实现倒计时并弹窗提示特效
Jun 05 Javascript
JS实现仿苹果底部任务栏菜单效果代码
Aug 28 Javascript
JavaScript调用传递变量参数的相关问题及解决办法
Nov 01 Javascript
jQuery实现的倒计时效果实例小结
Apr 16 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
Dec 31 Javascript
使用JavaScript根据图片获取条形码的方法
Jul 04 Javascript
layui 点击重置按钮, select 并没有被重置的解决方法
Sep 03 Javascript
vue 判断元素内容是否超过宽度的方式
Jul 29 Javascript
JavaScript中关于预编译、作用域链和闭包的理解
Mar 31 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与XML联手进行网站编程代码实例
2008/07/10 PHP
Symfony2函数用法实例分析
2016/03/18 PHP
php工具型代码之印章抠图
2018/07/18 PHP
很可爱的输入框
2008/08/03 Javascript
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
javascript真的不难-回顾一下基础知识
2013/01/15 Javascript
javascript实现可全选、反选及删除表格的方法
2015/05/15 Javascript
javascript中的altKey 和 Event属性大全
2015/11/06 Javascript
jQuery中的select操作详解
2016/11/29 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
echarts学习笔记之图表自适应问题详解
2017/11/22 Javascript
vue中各选项及钩子函数执行顺序详解
2018/08/25 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
详解Node.js amqplib 连接 Rabbit MQ最佳实践
2019/01/24 Javascript
详解JavaScript中new操作符的解析和实现
2020/09/04 Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
2020/09/04 Javascript
python获得一个月有多少天的方法
2015/06/04 Python
对Python subprocess.Popen子进程管道阻塞详解
2018/10/29 Python
python程序封装为win32服务的方法
2021/03/07 Python
python检测IP地址变化并触发事件
2018/12/26 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
2019/10/17 Python
python中的插入排序的简单用法
2021/01/19 Python
如何用python开发Zeroc Ice应用
2021/01/29 Python
中国跨境电商:Tomtop
2017/03/16 全球购物
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
一份软件工程师的面试试题
2016/02/01 面试题
党员干部2014全国两会学习心得体会
2014/03/10 职场文书
2014全国两会学习心得体会1000字
2014/03/10 职场文书
大连导游词
2015/02/12 职场文书
乒乓球比赛通知
2015/04/27 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
企业宣传语大全
2015/07/13 职场文书
2015年教学副校长工作总结
2015/07/22 职场文书