从压缩图片开始的node世界之旅

546 阅读2分钟

这是我参与2022首次更文挑战的第8天,活动详情查看:2022首次更文挑战

从压缩图片开始

最近呢,公司的项目逐渐稳定,除了下班时间学习flutter以外,也能在工作时间不忙的时候抽空学习一下node了,唉,本来是很早就在说的,结果拖啊拖啊就到今年了。

这里也是讲一讲我学习的,以及我的理解。应该也算是我零基础入门node、cli开发的路线记录了。

自己之前也试着找过一些,但是看着有点头大,所以烦了朋友一阵,给推荐了一些入门的文章,今天这里就从压缩图片开始。

从压缩图片开始还是聊,还是因为公司这边的租房项目优区生活内置了一个聊天的功能,以及本身的发布房源允许添加房源图片, 发布求租功能、聊天功能支持语音,所以会有很多图片或语音的聊天记录,录音压缩优化以后再说。

图片压缩则先搞一步,NodeJS中进行图片压缩,可以选择三方模块:Images。Images是一个Node.js轻量级跨平台图像编解码库,不过事先爆料,这玩意儿只能输出jpg图片,所以是有缺陷的。

fs是node默认自带的库,无需在install了,而images是第三方的模块,所以需要先手动引入下。

npm install images

目录结构如下

-root
|-imgs
|--|-1.jpg
|-index.js
|-package.json
|-node_modules
var images = require("images");
var fs = require("fs");
var path = "imgs";

function explorer(path) {
  fs.readdir(path, function (err, files) {
    //err 为错误 , files 文件名列表包含文件夹与文件
    if (err) {
      console.log('error:\n' + err);
      return;
    }

    files.forEach(function (file) {
      fs.stat(path + '/' + file, function (err, stat) {
        if (err) { console.log(err); return; }
        if (stat.isDirectory()) {
          // 如果是文件夹遍历
          explorer(path + '/' + file);
        } else {
          // 读出所有的文件
          console.log('文件名:' + path + '/' + file);
          var name = path + '/' + file;
          var outName = path + '/' + 'another_' + file

          images(name).save(outName, {
            quality: 50 //保存图片到文件,图片质量为50
          });
        }
      });
    });
  });
}
explorer(path);

image.png

image.png

总结

可以看到图片在压缩之后没有什么明显的区别,(模糊是图片本身的原因),如果是需要调整尺寸的,在库当中也有对应的方法。

image.png

image.png