Node.js批量给图片加水印的方法

 更新时间:2016年11月15日 16:33:33   作者:敲代码的怪蜀黍  
这篇文章主要介绍了Node.js批量给图片加水印的方法,本文分步骤给大家介绍的非常详细,需要的朋友可以参考下

一、准备工作:

首先,你要阅读完这篇文章:https://www.jb51.net/article/97391.htm

然后,我们安装node.js的一个模块:imageinfo。

npm install imageinfo

二、直接上DEMO:

步骤如下:

step1:文件夹结构

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命令后,文件夹结构如下图

step4:查看批量加水印的图片

以上所述是小编给大家介绍的Node.js批量给图片加水印的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Node.js 多线程完全指南总结

    Node.js 多线程完全指南总结

    这篇文章主要介绍了Node.js 多线程完全指南总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • nodejs中使用worker_threads来创建新的线程的方法

    nodejs中使用worker_threads来创建新的线程的方法

    这篇文章主要介绍了nodejs中使用worker_threads来创建新的线程的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Node.js与MySQL交互操作及其注意事项

    Node.js与MySQL交互操作及其注意事项

    这篇文章给大家主要介绍了Node.js与MySQL交互操作及其注意事项,非常的详细,有相同需求的小伙伴可以参考下
    2016-10-10
  • node.js中实现kindEditor图片上传功能的方法教程

    node.js中实现kindEditor图片上传功能的方法教程

    最近在做一个类似于论坛的系统,帖子需要进行图文并茂的显示,所以用到了富文本编辑器:kindeditor,下面这篇文章主要给大家介绍了在node.js中实现kindEditor图片上传功能的方法教程,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-04-04
  • Node常见的三种安全防范手段详解

    Node常见的三种安全防范手段详解

    这篇文章主要为大家介绍了Node常见的三种安全防范手段详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 如何解决安装websocket还是报错Cannot find module'ws'问题

    如何解决安装websocket还是报错Cannot find module'ws&apos

    这篇文章主要介绍了如何解决安装websocket还是报Cannot find module'ws'问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Node.js入门笔记 之async模块

    Node.js入门笔记 之async模块

    这篇文章主要介绍了Node.js入门笔记 之async模块,async是一个异步处理模块,主要有三个方式:串行无关联、并行无关联 、串行有关联,文章围绕主题展开更多的相关内容,需要的小伙伴可以参考一下
    2022-06-06
  • async/await与promise(nodejs中的异步操作问题)

    async/await与promise(nodejs中的异步操作问题)

    这篇文章主要介绍了async/await与promise(nodejs中的异步操作问题),非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • Node.js进程管理之Process模块详解

    Node.js进程管理之Process模块详解

    本文详细讲解了Node.js进程管理之Process模块,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 快速掌握Node.js模块封装及使用

    快速掌握Node.js模块封装及使用

    这篇文章主要为大家详细介绍了Node.js模块封装及使用,帮助大家快速掌握Node.js模块封装及使用,感兴趣的小伙伴们可以参考一下
    2016-03-03

最新评论