zoukankan      html  css  js  c++  java
  • 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运行即可
  • 相关阅读:
    win7承载网络状态不可用,无线网卡驱动更新后也仍然不可用。
    oracle中读写blob字段的问题
    The import javax.servlet cannot be resolved
    关于BLOB数据类型插入ORACLE数据库的操作
    Android Spinner自动弹出列表,设置title
    java.lang.LinkageError: loader constraint violation: when resolving interface... 异常解决
    Java获取网络时间
    android 改变CheckBox和后面文字的间距
    大白话系列之C#委托与事件讲解(序言)
    大白话系列之C#委托与事件讲解(一)
  • 原文地址:https://www.cnblogs.com/moluxi/p/14677030.html
Copyright © 2011-2022 走看看