利用開源框架TakePhoto實現從相冊選擇圖片並裁剪,最後返回路徑

一、集成

compile 'com.jph.takephoto:takephoto_library:4.0.3'
github:開源鏈接

二、Activity集成開源類並重寫3個方法

public class TestActivity extends TakePhotoActivity {
    private TextView tv;
    private ImageView img;
    private Uri imageUri;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_photo);
        //設置一個裁剪後圖片的存儲位置
        File file = new File(Environment.getExternalStorageDirectory(), "/temp/" + System.currentTimeMillis() + ".jpg");
        if (!file.getParentFile().exists()) {
            file.getParentFile().mkdirs();
        }
        imageUri = Uri.fromFile(file);
        //綁定視圖
        tv=findViewById(R.id.textView);
        img=findViewById(R.id.imageView);
        //獲取一張圖片不裁剪
        //getTakePhoto().onPickFromGallery();
        //獲取一張圖片並裁剪
        CropOptions cropOptions=new CropOptions.Builder().setAspectX(1).setAspectY(1).setOutputX(50).setOutputY(50).setWithOwnCrop(true).create();
        getTakePhoto().onPickFromGalleryWithCrop(imageUri,cropOptions);

    }

    //重寫3個方法:成功後操作、失敗、取消,其實一般重寫takesuccess就行了。
    @Override
    public void takeSuccess(TResult result) {
        super.takeSuccess(result);
//        Log.e("success",""+result.getImage().getOriginalPath().toString());
        //成功後將圖片地址和圖片顯示到控件上
        tv.setText(result.getImage().getOriginalPath().toString());
        Glide.with(this).load(new File(result.getImage().getOriginalPath())).into(img);
    }

    @Override
    public void takeFail(TResult result, String msg) {
        super.takeFail(result, msg);
    }

    @Override
    public void takeCancel() {
        super.takeCancel();
    }
}
三、效果

PS:上面的activity直接調用了打開相冊選擇圖片的方法,也可以用一個按鈕來觸發這個操作
開源鏈接裏面有詳細的說明

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章