利用开源框架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直接调用了打开相册选择图片的方法,也可以用一个按钮来触发这个操作
开源链接里面有详细的说明

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值