项目介绍:SmartCropper
SmartCropper 是一个简单易用的智能图片裁剪库,专门用于裁剪身份证、名片、文档等照片。这个开源项目现已优化了一套具有更高识别率的模型和算法,旨在通过智能化的技术手段提升图片裁剪的准确度和用户体验。
支持特性
- 智能边框识别:使用基于 OpenCV 的智能算法自动识别图像中的边框。
- 手动调节选区:用户可以通过拖动锚点手动调整选区,放大镜效果可以提升定位体验。
- 透视变换:通过透视变换裁剪并矫正选区,使得图片被还原为正视图。
- 可定制的 UI:支持多种 UI 设置选项,包括辅助线、蒙版、锚点和放大镜等功能,便于用户根据个人喜好调整界面。
使用示例
-
智能选区和透视矫正:用户在选择图片后,系统会智能选取需要保存的部分,然后通过透视变换将图像矫正成正面。
-
锚点拖动与放大镜效果:允许用户通过拖动锚点来细调选区,右上角的放大镜效果会实时显示细节,方便精准定位。
智能选区算法优化
自 V2.1.1 起,SmartCropper 引入了机器学习算法,以 TensorFlow 的 HED 网络替代了传统的 Canny 算法,从而提高了边缘识别的准确性。
工程师需要在项目的 build.gradle
中添加配置以防止模型文件被压缩,还需在应用初始化时调用初始化方法。
接入方式
-
在项目根目录下的
build.gradle
文件中添加 JitPack repository。allprojects { repositories { ... maven { url 'https://jitpack.io' } } }
-
添加依赖:
dependencies { compile 'com.github.pqpo:SmartCropper:v2.1.3' }
注意:使用了 JNI,需要特别注意保持类不被混淆。
使用方法
-
布局定义:
在布局文件中定义
CropImageView
,确保 ScaleType 为居中类型,否则会报错。<me.pqpo.smartcropperlib.view.CropImageView android:id="@+id/iv_crop" android:layout_width="match_parent" android:layout_height="match_parent" />
-
设置图片:
使用
ivCrop.setImageToCrop(selectedBitmap)
方法设置待裁剪的图片。 -
进行裁剪:
调用
Bitmap crop = ivCrop.crop();
裁剪并矫正选区内的图片。
UI 属性
用户可以通过定义以下属性来自定义裁剪界面:
名称 | 格式 | 描述 |
---|---|---|
civMaskAlpha | integer | 选区外蒙版的透明度,取值范围 0-255 |
civShowGuideLine | boolean | 是否显示辅助线,默认 true |
civLineColor | color | 选区线的颜色 |
civLineWidth | dimension | 选区线的宽度 |
civShowMagnifier | boolean | 在拖动的时候是否显示放大镜,默认 true |
civMagnifierCrossColor | color | 放大镜十字准心的颜色 |
civGuideLineWidth | dimension | 辅助线宽度 |
civGuideLineColor | color | 辅助线颜色 |
civPointFillColor | color | 锚点内部区域填充颜色 |
civPointFillAlpha | integer | 锚点内部区域填充颜色透明度 |
项目特性
- 持续优化的点排序算法
- 增强的放大镜效果
- 支持 XML 属性设置
- 不断提升的智能选区算法
欢迎用户提出 ISSUE,以便对库进行进一步的完善。对于想要深入了解更多或者有合作意向的人士,可以联系开发者。