TakePhoto获取照片的使用

来源:互联网 发布:反渗透 纯水机 知乎 编辑:程序博客网 时间:2024/05/03 14:46

github项目地址 点击打开链接

TakePhoto是一款用于在Android设备上获取照片(拍照或从相册、文件中选择)、裁剪图片、压缩图片的开源工具库。

使用:

Gradle:

    compile 'com.jph.takephoto:takephoto_library:4.0.3'
继承TakePhotoActivityTakePhotoFragmentActivityTakePhotoFragment三者之一

重写这三个

@Overridepublic void takeSuccess(TResult result) {    super.takeSuccess(result);}@Overridepublic void takeFail(TResult result, String msg) {    super.takeFail(result, msg);}@Overridepublic void takeCancel() {    super.takeCancel();}

编写一个使用工具类

public class PhotoHelper {//    private View rootView;    public PhotoHelper() {//        this.rootView = rootView;    }    public static PhotoHelper of(Context context){        return new PhotoHelper();    }    /**     *     * @param pos  1:拍照  2:从相册选取     * @param photo     */    public void onClick(int pos, TakePhoto photo){        File file=new File(Environment.getExternalStorageDirectory(),                "/temp"+ System.currentTimeMillis()+".jpg");        if (!file.getParentFile().exists())file.getParentFile().mkdirs();        Uri imageUri=Uri.fromFile(file);        configCompress(photo);        configTakePhotoOption(photo);        switch (pos) {            case 0://拍照                photo.onPickFromCapture(imageUri);                break;            case 1://相册                photo.onPickFromGalleryWithCrop(imageUri,getCropOptions());                break;        }    }    //裁剪图片属性    private CropOptions getCropOptions() {        CropOptions.Builder builder=new CropOptions.Builder();        builder.setAspectX(800).setAspectY(800);//裁剪时的尺寸比例        builder.setWithOwnCrop(true);//s使用第三方还是takephoto自带的裁剪工具        return builder.create();    }    //配置图片属性    private void configTakePhotoOption(TakePhoto photo) {        TakePhotoOptions.Builder builder=new TakePhotoOptions.Builder();        builder.setWithOwnGallery(true);//使用自带相册        builder.setCorrectImage(false);//纠正旋转角度        photo.setTakePhotoOptions(builder.create());    }    //    配置压缩    private void configCompress(TakePhoto takePhoto){        CompressConfig config=new CompressConfig.Builder()                .setMaxSize(102400)//大小不超过100k                .setMaxPixel(800)//最大像素800                .enableReserveRaw(true)//是否压缩                .create();        takePhoto.onEnableCompress(config,true);//这个trued代表显示压缩进度条    }}

使用

photoHelper.onClick(position, getTakePhoto());

阅读全文
0 0
原创粉丝点击