# Photo Classifier ![Flutter](https://img.shields.io/badge/Flutter-3.0+-02569B?logo=flutter) ![Platform](https://img.shields.io/badge/Platform-iOS-lightgrey) ![License](https://img.shields.io/badge/License-MIT-blue) 照片分类插件是一个Flutter插件,旨在为移动应用提供智能照片分类功能。该插件能够自动识别和分组照片,提升照片管理体验。 ## 功能特点 - **相似照片分组**: 自动检测并分组相似的照片,帮助用户快速找到并整理重复照片 - **人物照片识别**: 智能识别包含人物的照片 - **屏幕截图识别**: 自动归类所有屏幕截图 - **模糊照片检测**: 识别质量不佳的模糊照片 - **实时处理进度**: 通过流(Stream)提供实时的分类进度和结果更新 ## 安装 将以下内容添加到您项目的 `pubspec.yaml` 文件中: ```yaml dependencies: photo_classifier: git: url: http://git.atmob.com/Groot/clean_pro_photo_classifier_plugin ref: v1.0.1 ``` 然后运行: ``` flutter pub get ``` ## 权限配置 ### iOS 在 `ios/Runner/Info.plist` 文件中添加以下权限描述: 调用分类器方法前请确保获取了相应的相册权限 ```xml NSPhotoLibraryUsageDescription 需要访问照片库以进行照片分类 ``` ## 使用方法 ### 基本用法 ```dart import 'package:photo_classifier/photo_classifier.dart'; import 'package:photo_classifier/models.dart'; // 创建分类器实例 final classifier = PhotoClassifier(); // 配置分类器 await classifier.configureClassifier( batchSize: 200, maxConcurrentProcessing: 4, similarityThreshold: 0.75, ); // 开始分类并监听结果 final subscription = classifier .startClassificationStream() .listen((event) { if (event == null) return; // 获取进度信息 final progress = event.progress; print('进度: ${(progress?.rate ?? 0) * 100}%'); // 获取分类结果 final result = event.result; if (result != null) { // 处理相似图片组 final similarGroups = result.similarGroups ?? []; // 处理人物照片 final peopleImages = result.peopleImages ?? []; // 处理截图 final screenshotImages = result.screenshotImages ?? []; // 处理模糊照片 final blurryImages = result.blurryImages ?? []; } // 检查是否完成 if (progress?.isCompleted == true) { subscription.cancel(); } }, onError: (error) { print('分类错误: $error'); }); // 取消分类过程 subscription.cancel(); classifier.resetClassifier(); ``` ### 配置选项 分类器提供以下配置选项: - `batchSize`: 每批处理的图片数量,默认为200 - `maxConcurrentProcessing`: 并发处理的最大数量,默认为4 - `similarityThreshold`: 相似度判定阈值(0.0-1.0),值越大表示要求越相似,默认为0.75 ```dart await classifier.configureClassifier( batchSize: 100, maxConcurrentProcessing: 2, similarityThreshold: 0.8, ); ``` ## 完整示例 查看 [example](http://git.atmob.com/Groot/clean_pro_photo_classifier_plugin/src/master/example) 目录获取完整的示例应用。 ## 实现原理 该插件使用视觉处理算法对照片进行分析,通过比较图像特征向量实现相似照片的分组,使用机器学习模型识别人物照片、屏幕截图和模糊图像。 ## 性能优势 在iPhone 12上对1686张相册图片的测试对比中,相比`Clean Pro` `v1.04`版本: | 性能指标 | 旧版本 | 新版本 | 提升倍率 | |---------|-------|-------|---------| | 首屏加载时间 | 44.76秒 | 1.27秒 | **35.2倍** | | 全分类完成时间 | 76.22秒 | 10.93秒 | **7.0倍** | 通过算法优化和并行处理,大幅提升了分类速度,同时保持了高准确度的分类结果,为用户提供更流畅的照片管理体验。 ## 贡献 欢迎提交问题和功能请求!要贡献代码,请先创建一个issue讨论您想要更改的内容。 ## 许可 该项目采用MIT许可证 - 详情请参阅 [LICENSE](LICENSE) 文件