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 学习笔记(九)call和apply方法
Jan 11 Javascript
ScrollDown的基本操作示例
Jun 09 Javascript
jquery实现预览提交的表单代码分享
May 21 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
Mar 28 Javascript
js绑定事件和解绑事件
Apr 27 Javascript
js使用generator函数同步执行ajax任务
Sep 05 Javascript
浏览器调试动态js脚本的方法(图解)
Jan 19 Javascript
解决vue 更改计算属性后select选中值不更改的问题
Mar 02 Javascript
浅析微信扫码登录原理(小结)
Oct 29 Javascript
13 个npm 快速开发技巧(推荐)
Jul 04 Javascript
layui监听select变化,以及设置radio选中的方法
Sep 24 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
May 15 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
上海无线电三厂简史修改版
2021/03/01 无线电
php cookie的操作实现代码(登录)
2010/12/29 PHP
centos 7.2下搭建LNMP环境教程
2016/11/20 PHP
PHP面向对象程序设计之类与反射API详解
2016/12/02 PHP
document.getElementById方法在Firefox与IE中的区别
2010/05/18 Javascript
将json对象转换为字符串的方法
2014/02/20 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
js实现防止被iframe的方法
2015/07/03 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
JS实现点击复选框变更DIV显示状态的示例代码
2017/12/18 Javascript
nodejs异步编程基础之回调函数用法分析
2018/12/26 NodeJs
详解vue-element Tree树形控件填坑路
2019/03/26 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
小程序Request的另类用法详解
2019/08/09 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
python获得图片base64编码示例
2014/01/16 Python
python打开网页和暂停实例
2014/09/30 Python
django celery redis使用具体实践
2019/04/08 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
HTML5中的网络存储实现方式
2020/04/28 HTML / CSS
耐克亚太地区:Nike APAC
2019/12/07 全球购物
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
招商经理岗位职责
2013/11/16 职场文书
保险经纪人求职信
2014/03/11 职场文书
2014乡镇领导班子四风对照检查材料思想汇报
2014/10/05 职场文书
2014年营销工作总结
2014/11/22 职场文书
预防职务犯罪警示教育心得体会
2016/01/15 职场文书
vue elementUI表格控制对应列
2022/04/13 Vue.js