# flutter_identification_photo **Repository Path**: anffvf/flutter_identification_photo ## Basic Information - **Project Name**: flutter_identification_photo - **Description**: 一个用Flutter来写可以 快速裁切证件照和快速更换背景颜色的小应用 - **Primary Language**: Dart - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2023-04-06 - **Last Updated**: 2023-04-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # flutter_identification_photo #### 介绍 一个用Flutter来写 可以快速裁切证件照/免冠照(一寸 二寸 小二寸) 和快速更换背景颜色的小应用 使用百度AI来分割图片 个人免费使用一万次 需要自己申请KEY 方便快捷 #### 软件架构 采用基于Provider的MVVM架构 #### 实现原理 1. 使用百度AI分离人像前景图 2. 通过Canvas 绘画背景和前景图 3. 通过PictureRecorder 去获取你所绘画的Canvas然后保存 4. 你也可以用屏幕区域截图的方式来保存图片(本案例未实现) #### 目录结构 ``` │ main.dart ---主文件 │ ├─base │ base_view_model.dart ---ViewModel 基类 │ provider_widget.dart --- provider组件的基类 │ ├─config │ api_config.dart ---- 网络的网址的配置 │ constants.dart ---- 字符串常量 │ network_config.dart ---- 网络属性的配置 │ sp_name.dart ---- sharedP 的名字存储 │ ├─model │ error_message_model.dart ---错误信息的model │ token_model.dart --- 获取到token的model │ view_state_error.dart --- 错误的解析 │ ├─network --- 客户端 │ │ dio_client.dart │ │ │ └─core │ base_resp_data.dart ---返回的解析 │ net_cache_interceptor.dart --- 网络缓存的拦截器(未实现) │ option_interceptor.dart --- 访问网络前的拦截器 │ request_interceptor.dart --- 访问完成的拦截器和错误拦截器 │ response_exception.dart │ resp_data_model.dart │ resp_error_model.dart │ ├─repository --- 网络访问都在这个文件夹 方便后续替换接口不影响界面 │ baidu_ai_repository.dart --- 关于百度Ai需要的接口访问 │ ├─utils --- 工具类 │ cache_util.dart --- sp 缓存管理 (本文未用到) │ color_util.dart --- 颜色转换 │ file_util.dart --- 文件存储转换字符串包裹 │ format_util.dart --- 格式转换 │ image_util.dart --- 图片的生成转换 │ permission_util.dart --- 权限管理 │ screen_util.dart --- 屏幕缩放 │ string_util.dart --- 文字处理 │ toast_util.dart --- 土司设置 │ ├─view --- 主页面 │ home_page.dart │ └─view_model --- viewmodel home_view_model.dart ```