检索项目中冗余的图片

简介: 检索项目中冗余的图片

说在前面

平时在项目中我们会使用到一些图片,很多时候我们会直接将图片打包到项目中去,随着项目的更新迭代,我们可能会删除一些图片的引用,但没将图片源文件删除,这个时候没有被引用到的图片就会成为冗余的文件,而且图片文件的大小一般都会比较大,这个时候就会使得项目的体积白白增大了,所以现在我们可以制作一个简单的检索脚本来找出项目中未被应用的图片资源,将没用过的图片删除的话可以缩小项目包的体积,对打包速度也有一定的优化。

思路分析

实现步骤

  • 1、获取图片资源

首先我们需要先获取到项目中所有的的图片资源文件,一般图片资源都会有一个目录来单独存放,我们只需要获取该目录下的文件列表即可:

这里我将图片都放在了image目录下,所以直接读取image目录获取到该目录下的所有图片文件即可,如果有多级目录存放的话,我们就需要递归进行获取了。

const imageList = fs.readdirSync("./image");
  • 2、遍历项目文件目录文件

一般我们的项目文件目录都是会有多层嵌套的,这里我模拟创建了一个简单的目录机构,具体结构如下图:

这种时候我们需要递归去遍历每一级目录,获取到所有的文件,我们需要这样做:先获取当前目录下的所有文件和目录,遍历判断是文件还是文件夹,是文件的话我们可以直接获取文件文本内容来判断是否存在图片列表中的图片,否则则需要递归去获取下级目录文件,具体代码如下:

const findImg = (dir = "./src") => {
  const fileList = fs.readdirSync(dir);
  fileList.forEach((item) => {
    const path = dir + "/" + item;
    if (fs.statSync(path).isFile()) {
      const content = fs.readFileSync(path, "utf8");
      imageList.forEach((image) => {
        if (content.includes(image)) {
          if (!res[path]) res[path] = [];
          res[path].push(image);
        }
      });
    } else {
      findImg(path);
    }
  });
};

局限

这种检索方法只适用于搜索在代码中直接引入路径的图片文件,如果是通过接口返回的图片名字或路径来进行动态引入的话,我们则无法通过这个脚本检索到。

完整代码

const fs = require("fs");
const imageList = fs.readdirSync("./image");
console.log("imageList", imageList);
const set = new Set(imageList);
const res = {};
const findImg = (dir = "./src") => {
  const fileList = fs.readdirSync(dir);
  fileList.forEach((item) => {
    const path = dir + "/" + item;
    if (fs.statSync(path).isFile()) {
      const content = fs.readFileSync(path, "utf8");
      imageList.forEach((image) => {
        if (content.includes(image)) {
          if (!res[path]) res[path] = [];
          res[path].push(image);
          set.delete(image);
        }
      });
    } else {
      findImg(path);
    }
  });
};
findImg();
console.log(res);
console.log(set);

说在后面

🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,在此谢谢大家的支持,我们下文再见 🙌。

目录
相关文章
|
6月前
|
机器学习/深度学习 开发工具 计算机视觉
视觉智能平台常见问题之视频文件较大上传时可以分段上传或者切割视频如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
|
6月前
|
算法 UED 索引
如何优化因为高亮造成的大文本(大字段)检索缓慢问题
如何优化因为高亮造成的大文本(大字段)检索缓慢问题
134 0
|
3月前
|
机器学习/深度学习 JavaScript 前端开发
深度学习必备:对数据集的拆分、根据拆分图片拆分labels、对全部标注标签进行区间检查
使用JavaScript代码或浏览器扩展可以一次性在浏览器中打开多个相同的标签页。
|
6月前
灵活标签导出:一键满足多样化下游数据需求!
Dataphin标签平台支持导出标签时同步导出代码名称,解决了业务人员理解代码值的难题。用户可选择导出标签值、代码名称或两者,支持多数据源一键建表,实现与业务系统无缝对接。
灵活标签导出:一键满足多样化下游数据需求!
|
5月前
|
存储 网络协议 文件存储
技术心得:图片存储方案
技术心得:图片存储方案
69 0
|
6月前
|
Windows
(文件[夹]批量分类整理_多级匹配_交叉匹配_路径结构交叉调整)文件[夹]批量复制
该文介绍了如何使用特定工具进行批量文件整理。首先,需要从提供的百度网盘和蓝奏云链接下载工具,并用提取码解锁。接着,打开工具的批量复制功能,将待整理的图片文件拖入“来源路径”,目标文件夹拖入“终点路径”。通过层级过滤排除不需要的路径。然后,利用多级匹配设置,提取文件名和路径中的关键词,如“动物”、“小型”、“食草”等,设置复制后的文件重命名规则。最后,执行批量复制,完成文件的智能分类与命名。整个过程旨在根据文件的原始分类信息,自动将其移动到相应的新目录结构下。
|
机器学习/深度学习 自然语言处理 安全
【网安专题11.8】14Cosco跨语言代码搜索代码: (a) 训练阶段 相关程度的对比学习 对源代码(查询+目标代码)和动态运行信息进行编码 (b) 在线查询嵌入与搜索:不必计算相似性
【网安专题11.8】14Cosco跨语言代码搜索代码: (a) 训练阶段 相关程度的对比学习 对源代码(查询+目标代码)和动态运行信息进行编码 (b) 在线查询嵌入与搜索:不必计算相似性
259 0
|
6月前
防止图片重复下载方案,图像压缩保存与压缩显示
防止图片重复下载方案,图像压缩保存与压缩显示
62 0
|
定位技术 API 容器
百度地图API开发:停车场分布标注和检索静态版
百度地图API开发:停车场分布标注和检索静态版
148 0
|
6月前
|
分布式计算 Java Hadoop
MapReduce编程:检索特定群体搜索记录和定义分片操作
MapReduce编程:检索特定群体搜索记录和定义分片操作
64 0