未引用图片资源扫描工具
该工具用于扫描指定项目目录中的图片资源,并检测这些图片是否在代码中被引用,帮助开发者清理未使用的图片资源,节省项目体积和维护成本。
功能概述
- 扫描图片资源
支持扫描普通图片文件(.png,.jpg,.jpeg,.gif,.pdf)以及.imageset目录中的图片资源。 - 扫描代码中的图片引用
支持扫描 Objective-C 和 Swift 代码文件(.swift,.m,.mm,.xib,.storyboard),通过常见的图片引用方式(如imageNamed:、UIImage(named:)、setImage:forState:等)提取图片名。 - 生成未引用图片列表
将未被代码引用的图片路径写入输出文件unused_images.txt,供开发者进一步确认和处理。
使用说明
1. 配置参数
PROJECT_PATH:项目路径,默认为当前目录下的./TestUnUserRes,请根据实际项目路径修改。OUTPUT_FILE:输出文件名,默认为unused_images.txt。IMAGE_EXTENSIONS:支持的图片文件后缀列表。CODE_EXTENSIONS:支持扫描的代码文件后缀列表。
2. 扫描流程
- 扫描图片资源
遍历项目目录,收集所有符合后缀的图片文件和.imageset目录,图片名统一小写且不包含扩展名。 - 扫描代码引用
遍历代码文件,使用正则表达式匹配常见的图片引用方式,提取引用的图片名(去除路径和扩展名,统一小写)。 - 对比并输出
找出图片资源中未被代码引用的图片,将其完整路径写入输出文件。
3. 输出文件格式
-
输出文件开头有提示文字:
未被引用的图片:⚠️⚠️⚠️需要二次确认 -
后续列出所有未被引用的
.png格式图片的完整路径。
代码模块说明
find_images(project_path)
- 输入:项目根路径
- 输出:字典,键为图片名(不含扩展名,统一小写),值为对应图片文件或
.imageset目录的完整路径列表 - 功能:遍历目录收集所有图片资源
find_image_references(project_path)
- 输入:项目根路径
- 输出:集合,包含代码中引用的所有图片名(不含扩展名,统一小写)
- 功能:遍历代码文件,使用正则表达式匹配图片引用
main()
- 执行扫描流程,打印扫描结果,并将未引用图片写入输出文件。
注意事项
- 仅支持部分常见图片引用方式,可能存在漏判或误判情况,输出结果需二次确认。
- 只输出未引用的
.png图片路径,其他格式未引用图片未写入文件。 - 读取文件时默认使用 UTF-8 编码,若项目中有其他编码文件可能导致读取异常。
.imageset目录视为一组图片资源,统一以目录名作为图片名处理。- 运行脚本前请确保 Python 环境已正确安装。
示例输出
未被引用的图片:⚠️⚠️⚠️需要二次确认
图片名称: ./TestUnUserRes/Assets.xcassets/Scaner/scaner_flashlight_on.imageset/scaner_flashlight_on@3x.png
图片名称: ./TestUnUserRes/Assets.xcassets/Scaner/nav_back_whiteArrow.imageset/nav_back_whiteArrow@3x.png
...
使用实例
扩展建议
- 增加对更多图片引用方式的支持,提高准确率。
- 支持输出所有未引用图片格式,不限
.png。 - 支持多语言编码文件读取。
- 增加命令行参数支持,方便自定义扫描路径和输出文件名。
如有疑问或需求,欢迎反馈和改进!