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中的undefined 与 null 的区别  补充篇
Mar 17 Javascript
JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))
Jul 17 Javascript
JS控制输入框内字符串长度
May 21 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
Mar 04 Javascript
jquery获取及设置outerhtml的方法
Mar 09 Javascript
JavaScript更改字符串的大小写
May 07 Javascript
JavaScript中数组Array.sort()排序方法详解
Mar 01 Javascript
Vue实例中生命周期created和mounted的区别详解
Aug 25 Javascript
JavaScript实现区块链
Mar 14 Javascript
vue中实现Monaco Editor自定义提示功能
Jul 05 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
Jul 19 Javascript
vue中实现弹出层动画效果的示例代码
Sep 25 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学习笔记之 函数声明(二)
2011/06/09 PHP
PHP处理excel cvs表格的方法实例介绍
2013/05/13 PHP
ThinkPHP3.1新特性之对Ajax的支持更加完善
2014/06/19 PHP
php使用NumberFormatter格式化货币的方法
2015/03/21 PHP
php如何实现只替换一次或N次
2015/10/29 PHP
PHP中str_split()函数的用法讲解
2019/04/11 PHP
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
2012/11/14 Javascript
jquery中的$(document).ready()使用小结
2014/02/14 Javascript
js,jquery滚动/跳转页面到指定位置的实现思路
2014/06/03 Javascript
javascript结合fileReader 实现上传图片
2015/01/30 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
BootStrap Typeahead自动补全插件实例代码
2016/08/10 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
JavaScript数据结构链表知识详解
2016/11/21 Javascript
Node.js获取前端ajax提交的request信息
2017/02/20 Javascript
Vue表单输入绑定的示例代码
2018/11/01 Javascript
vue中使用codemirror的实例详解
2018/11/01 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
使用beaker让Facebook的Bottle框架支持session功能
2015/04/23 Python
Python实现桌面翻译工具【新手必学】
2020/02/12 Python
Django models filter筛选条件详解
2020/03/16 Python
Python可以实现栈的结构吗
2020/05/27 Python
html5绘制时钟动画
2014/12/15 HTML / CSS
HTML5 LocalStorage 本地存储详细概括(多图)
2017/08/18 HTML / CSS
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
法国设计制造的扫帚和刷子:Andrée Jardin
2018/12/06 全球购物
证婚人搞笑证婚词
2014/01/10 职场文书
学习标兵获奖感言
2014/02/20 职场文书
《油菜花开了》教学反思
2014/02/22 职场文书
公司慰问信范文
2015/03/23 职场文书
2015年秋季小班开学寄语
2015/05/27 职场文书
Java基础-封装和继承
2021/07/02 Java/Android
JavaScript数组reduce()方法的语法与实例解析
2021/07/07 Javascript