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 URL解析函数和分段URL解析方法
Apr 12 Javascript
JavaScript实现鼠标点击后层展开效果的方法
May 13 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
Sep 26 Javascript
跟我学习javascript的循环
Nov 18 Javascript
React.js入门实例教程之创建hello world 的5种方式
May 11 Javascript
JavaScript 拖拽实例代码
Sep 21 Javascript
js 中获取制定的cook信息实现方法
Nov 19 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
May 18 Javascript
微信小程序左滑删除功能开发案例详解
Nov 12 Javascript
基于JS实现web端录音与播放功能
Apr 17 Javascript
微信小程序实现多行文字超出部分省略号显示功能
Oct 23 Javascript
基于JS判断对象是否是数组
Jan 10 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,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
PHP的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
linux系统下php安装mbstring扩展的二种方法
2014/01/20 PHP
购物车实现的几种方式优缺点对比
2018/05/02 PHP
js获取url参数的使用扩展实例
2007/12/29 Javascript
JavaScript 学习技巧
2010/02/17 Javascript
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
2011/09/09 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
JS中引用百度地图并将百度地图的logo和信息去掉
2013/09/29 Javascript
js中arguments的用法(实例讲解)
2013/11/30 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
chrome下img加载对height()的影响示例探讨
2014/05/26 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
浅谈javascript中onbeforeunload与onunload事件
2015/12/10 Javascript
Vue全家桶实践项目总结(推荐)
2017/11/04 Javascript
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
利用vue + koa2 + mockjs模拟数据的方法教程
2017/11/22 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
koa大型web项目中使用路由装饰器的方法示例
2019/04/02 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
2020/12/28 Javascript
[07:40]DOTA2每周TOP10 精彩击杀集锦vol.4
2014/06/25 DOTA
python实现网站的模拟登录
2016/01/04 Python
详解python进行mp3格式判断
2016/12/23 Python
python购物车程序简单代码
2018/04/18 Python
Python测试模块doctest使用解析
2019/08/10 Python
Python 矩阵转置的几种方法小结
2019/12/02 Python
Django admin 实现search_fields精确查询实例
2020/03/30 Python
欧缇丽美国官网:Caudalie美国
2016/12/31 全球购物
德国珠宝和手表在线商店:VALMANO
2019/03/24 全球购物
德国足球商店:OUTFITTER
2019/05/06 全球购物
Python+Appium实现自动抢微信红包
2021/05/21 Python
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫