支持特性
- 使用智能算法識別圖片中的邊框
- 支持拖動錨點常摧,手動調節(jié)選區(qū)
- 使用透視變換裁剪并矯正選區(qū)
例子
下載Demo:傳送門
智能選區(qū):
透視變換裁剪并矯正選區(qū):
拖動錨點瑞信,手動調節(jié)選區(qū):
接入
可以直接依賴 aar 文件夾下的 aar 文件盔然,也可以 clone 項目,將 smartcropperlib 作為 Android 模塊導入瞧剖。之后有需要的話可以上傳到倉庫墅垮。 另外根目錄 libs 目錄下是編譯好的 native library,如果引入項目不想編譯意鲸,可以直接使用烦周。
注意:不要混淆
使用
1. 布局:
<me.pqpo.smartcropperlib.view.CropImageView
android:id="@+id/iv_crop"
android:layout_width="match_parent"
android:layout_margin="20dp"
android:layout_height="0dp"
android:layout_weight="1"/>
2. 智能選區(qū):
Point[] points = SmartCropper.scan(selectedBitmap);
在 native 層智能識別邊框尽爆,返回的 points 是大小為4的數(shù)組,表示選區(qū)邊框的四個頂點读慎,依次為左上漱贱,右上,右下夭委,左下幅狮。
3. 設置給 CropImageView 展示
ivCrop.setCropPoints(points);
ivCrop.setImageBitmap(selectedBitmap);
將選區(qū)頂點,需要顯示的圖片設置給 CropImageView 顯示圖片株灸,繪制選區(qū)崇摄。
3. 裁剪:
Bitmap crop = ivCrop.crop();
根據(jù)選區(qū)裁剪出選區(qū)內(nèi)的圖片,并使用透視變換矯正慌烧。
API 說明
SmartCropper 類:
1. 掃描邊框逐抑,大圖下會比較耗時
public static Point[] scan(Bitmap srcBmp)
返回值為大小為4的 Point 數(shù)組,表示選區(qū)邊框的四個頂點屹蚊,依次為左上厕氨,右上,右下汹粤,左下腐巢。
2. 根據(jù)邊框頂點裁剪,大圖下會比較耗時
public static Bitmap crop(Bitmap srcBmp, Point[] cropPoints)
CropImageView 類:
1. 設置裁剪邊框錨點
public void setCropPoints(Point[] cropPoints)
2. 設置選區(qū)外的透明度
public void setMaskAlpha(int mMaskAlpha)
3. 設置是否顯示輔助線
public void setShowGuideLine(boolean showGuideLine)
4. 設置選區(qū)邊框線顏色
public void setLineColor(int lineColor)
5. 設置選區(qū)邊框線寬度
public void setLineWidth(int lineWidth)
6. 根據(jù)用戶選區(qū)裁剪圖片
public Bitmap crop()
7. 根據(jù)指定頂點裁剪圖片
public Bitmap crop(Point[] points)
Futures
- 優(yōu)化智能選區(qū)算法
- CropImageView 選區(qū)放大鏡效果
- ...
借鑒博客:pqpo.me
License
Copyright 2017 pqpo
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.