js通过宽高特征对图片进行分类

# 所需模块

* imageinfo

* image-size

使用npm安装即可

#方法

将会把分类后的数据放置到指定文件夹

 

函数定义

/* 复制图片 */
function gotoimg(oldurl, newurl) {
  fs.readFile(oldurl, function (err, data) {
    if (err) {
      throw err;
    }
    fs.writeFile(newurl, data, function (error) {
      if (error) {
        throw error;
      }
    });
  });
}
获取文件夹中所有图片文件
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);
    }
  })
}
住要的数据分析部分
//获取文件夹下的所有图片
  getImageFiles: function (path) {
    var imageList = []; //存放遍历到的数据
    this.getFileList(path).forEach((item) => {
      var ms = image(fs.readFileSync(item.path + item.filename));
      ms.mimeType && (imageList.push(item.filename))
      /* 文件处理 */
      var url = item.path + item.filename
      var dimensions = sizeOf(url);
      /* 只当范围内宽高放进指定文件夹 */
      sum = dimensions.width + dimensions.height
      console.log(item.filename)
      if (sum <= 777 && sum >= 757) { /* 特征判定 */
        gotoimg(url, "D:/public/project/yytdata/data/1/" + item.filename)  /* 对将当前特征图片放置到指定文件夹 */
      } else if (sum <= 308 && sum >= 288) {
        gotoimg(url, "D:/public/project/yytdata/data/2/" + item.filename)
      }
    
    });
    return imageList;
  }
调用方法,参数是要进行处理图片的文件夹地址
getFiles.getImageFiles("C:/Users/fepengfei/Desktop/数据分类/");
 
使用node运行即可
posted @ 2021-04-19 15:27  魔露西  阅读(114)  评论(0编辑  收藏  举报