df063dc38e851e31f4784746e731d7984662cfb2
CheckShot - Android 图片检查与拼图工具
CheckShot 是一个面向 Android 的图片处理与检查工具,包含水印处理、拼图合成、以及丰富的设置能力,配合 AirTest 自动化测试用例,帮助实现端到端的图像工作流。
核心功能
- 水印设置
- 时间水印:拍摄后在左下角叠加时间戳,格式固定为 "yyyy年-MM月-dd日 HH:mm:ss"。
- 地点水印:优先通过 Geocoder 联网解析地址,失败时回落显示经纬度。可在设置中配置校准方式。
- 样式:提供三种预设样式(默认/简约/醒目),并可在设置中预览和应用。
- 多图拼图(合成)模块
- 布局规则:支持 2x2 和 3x3 两种网格布局,图片自动缩放裁剪以适配网格。
- 核心能力:图片拼接、模板化布局编辑(替换/删除图片)、合成质量控制(分辨率/清晰度)。
- 交互:支持替换网格中的图片、删除图片、添加新图片、设置合成质量和文本水印文本。
- 设置与通用配置
- 水印设置、合成设置、通用设置、关于等配置项,均可通过设置界面调整。
- 测试与自动化
- 集成 AirTest 测试用例,覆盖水印、相册、拼图、设置等场景,便于回归验证。
通用拼图布局组件技术规格
1. 逻辑结构
采用“上-中-下”三段式布局:
┌─────────────────────────┐
│ 标题区 (Title) │ 高度自适应,支持 1 行文本
├─────────────────────────┤
│ │
│ 图片网格区 │ 2x2 或 3x3 栅格布局
│ (Grid Area) │
│ │
├─────────────────────────┤
│ 底部文字区 (Text) │ 200dp 高度,包含标题+内容
└─────────────────────────┘
2. 核心布局参数化
| 参数 | 说明 | 当前值 |
|---|---|---|
| Grid_Columns | 列数 | 2 或 3 |
| Grid_Rows | 行数 | 2 或 3 |
| S | 单元格间距 | 4dp |
| P | 容器内边距 | 16dp |
布局模板自动匹配:根据图片数量自动选择最接近的栅格模板。
3. 内容渲染规则
- 标题区:位于顶部,高度自适应,支持 1 行文本
- 图片网格区:位于栅格正下方,由图片组成
- 内容区:位于底部,由 Title(加粗)和 Content(常规)组成
4. 缩放算法规格
等比缩放 (Proportional Scaling)
- 锁定原始宽高比,严禁 X 或 Y 轴独立拉伸
- 计算缩放比例:
k = max(Wt / W_orig, Ht / H_orig)
其中:
Wt= 目标单元格宽度(物理像素)Ht= 目标单元格高度(物理像素)W_orig= 原始图片宽度H_orig= 原始图片高度
填充模式
- Aspect Fill:图片须完全覆盖单元格区域,不允许出现留白(Gap-free)
采样策略
- 下采样 (Downsampling):针对大图缩小,采用双线性(Bilinear)过滤,避免出现锯齿或摩尔纹
对齐规则
- Center Aligned:初始加载时,图片几何中心与单元格几何中心重合
分辨率限制
- Max DPI 限制:缩小后的图片逻辑像素密度不低于 320dpi,确保在高分屏下的视觉清晰度
5. 布局通用适配规则
- 系统根据当前选定的布局模板(2x2 或 3x3),计算出单个单元格的目标物理像素 (Wt, Ht)
- 原始图片输入后,自动计算缩放比例 k = max(Wt/W_orig, Ht/H_orig)
- 图片按 k 倍数进行等比缩小
- 缩小后的图片根据单元格中心进行溢出裁切,确保视觉上的严丝合缝
架构与实现要点
- Watermark:时间文本来自系统时间,地点文本通过 LocationHelper/Geocoder 获取。
- Puzzle:通过 Bitmap 拼接与 Canvas/Matrix 实现多种布局,支持图片替换、删除与质量控制。
- Settings:使用 DataStore 保存用户偏好。
快速开始
- 构建与运行
- 构建调试 APK:
./gradlew assembleDebug - 在设备/模拟器上安装:
adb install -r app/build/outputs/apk/debug/app-debug.apk
- 构建调试 APK:
- AirTest 测试
- 运行测试用例(需安装 AirTest 及依赖):
airtest run test/airtest/... --device Android:///
- 运行测试用例(需安装 AirTest 及依赖):
项目结构与升级
- 主要代码位于:
- app/src/main/... 业务代码与 UI 组件
- app/src/test/... 单元测试
- test/airtest/... AirTest 的 UI 测试用例
- README 作为版本演进的记录,后续变更请同步更新。
持续集成与发布
- 建议在 CI 中执行:编译、单元测试、AirTest 测试并在通过后打包发行版。
联系与贡献
- 如需进一步定制文档结构,或需要将某些部分拆分为单独的开发指南,请告知偏好。
Description
Languages
Kotlin
87.4%
Python
12.6%