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运行即可
  • 相关阅读:
    MFC单文档框架分析及执行流程(转)
    MFC不同工程(解决方案)之间对话框资源的复制与重用方法(转)
    【DLL】动态库的创建,隐式加载和显式加载(转)
    H264协议(转)
    YUV颜色编码解析(转)
    windows下常用快捷键(转)
    【Sqlite3】SQLITE3使用总结(转)
    C++11 自动释放锁(转)
    alt+ F8 设置无效(转)
    Invalidate()(转)
  • 原文地址:https://www.cnblogs.com/moluxi/p/14677030.html
Copyright © 2011-2022 走看看