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 相关文章推荐
qq悬浮代码(兼容各个浏览器)
Jan 29 Javascript
JavaScript中解析JSON数据的三种方法
Jul 03 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
Aug 17 Javascript
理解javascript中try...catch...finally
Dec 25 Javascript
jQuery语法小结(超实用)
Dec 31 Javascript
老司机带你解读jQuery插件开发流程
May 16 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
Jun 06 Javascript
Bootstrap表单Form全面解析
Jun 13 Javascript
解决vue组件中click事件失效的问题
Nov 09 Javascript
javascript History对象原理解析
Feb 17 Javascript
解决微信授权成功后点击按返回键出现空白页和报错的问题
Jun 08 Javascript
vue前端工程的搭建
Mar 31 Vue.js
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
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
php输出全球各个时区列表的方法
2015/03/31 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
2015/08/21 PHP
CI框架实现框架前后端分离的方法详解
2016/12/30 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
2017/09/30 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
2018/12/08 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
js 表格隔行颜色
2009/12/02 Javascript
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
2014/11/16 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
充分发挥Node.js程序性能的一些方法介绍
2015/06/23 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
JavaScript获取服务器端时间的方法
2016/11/29 Javascript
微信小程序之蓝牙的链接
2017/09/26 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
React 组件间的通信示例
2018/06/14 Javascript
微信小程序日期选择器实例代码
2018/07/18 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
原生js检测页面加载完毕的实例
2018/09/11 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
Vue.js实现大转盘抽奖总结及实现思路
2019/10/09 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
详解Python的迭代器、生成器以及相关的itertools包
2015/04/02 Python
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
Python常见异常分类与处理方法
2017/06/04 Python
Python学习之Anaconda的使用与配置方法
2018/01/04 Python
使用python采集Excel表中某一格数据
2020/05/14 Python
墨西哥网上购物:Linio墨西哥
2016/10/20 全球购物
高中生的学习总结自我鉴定
2013/10/26 职场文书
求职信格式范文
2015/03/19 职场文书
国庆放假通知怎么写
2015/07/30 职场文书
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS
iPhone13 Pro外观确定,升级4800万镜头,4月20日发新品
2021/04/15 数码科技
多人盗宝《绿林侠盗》第三赛季4.5上线 跨平台实装
2022/04/03 其他游戏