美文网首页android开发技巧
Android 图片选择(ImageSelector) (拍照

Android 图片选择(ImageSelector) (拍照

作者: 水妖 | 来源:发表于2020-05-29 15:33 被阅读0次

git地址

ImageSelector

1.图片选择
2.拍照
3.图片裁剪
4.图片展示
5.图片压缩
未命名.png

使用:


ImageSelector.with(activity)

    .options(new SelectImgOptions())//处理方式

    .compress(new CompressOptions())//图片压缩

    .execute();

依赖:


implementation 'com.github.waterfaity:ImageSelector:2.3.21

详细:

1.Options(AOptions):

//设置进出场动画:启动进场,启动出场,关闭进场,关闭出场(注:如果设置则必须4个动画资源(R.anim.*))

setTransitionAnimRes(int[] transitionAnimRes)

//设置一个tag  在onActivityResult() 中会接收该tag

setTag(Object object) / getTag() 

//设置屏幕方向 `ConstantUtils.ORIENTATION_PORT`(默认)/`ConstantUtils.ORIENTATION_LAND`

setScreenOrientation(int orientation)

2.图片选择(SelectImgOptions):

new SelectImgOptions()

    //是否包涵gif格式图片

    .setContainsGif(false)

    //图片加载方式

    // 1.遍历文件夹 默认 (不用传值)

    // 2.SELECT_IMG_MODULE_TYPE_CURSOR  调用ContentResolver所有图片资源(建议:速度更快)

    .setModelType(ConstantUtils.SELECT_IMG_MODULE_TYPE_CURSOR)

    //每行数量

    .setGridNum(3)

    //选择图片最大个数

    .setMaxNum(9)

    //搜索深度 setModelType=默认 时生效

    .setSearchDeep(4)

    //是否加载搜索缓存

    .setLoadCache(false)

    //添加搜索文件夹 setModelType=默认 时生效

    .addSearchPaths(searchPathList)

    //添加忽略文件夹

    .addIgnorePaths(ignorePathList)

说明:

1.遍历sdcard文件夹(指定层次深度searchDeep),如果文件夹发现图片 , 添加到已搜索到图片的文件列表中,并跳入下一个文件夹搜索

2.使用ContentResolver搜索 添加搜索标签(png,jpg,jpeg,gif 等) 优点:更快速

3.拍照(TakePhotoOptions):

new TakePhotoOptions()

    .setPathAuthority("")//设置FileProvider 的 authority  (7.0以后的共享文件)

4.图片裁剪(CropImgOptions):

new CropImgOptions()

    //裁剪引擎 1.CropImgOptions.CROP_TYPE_SElf本程序处理 2.CROP_TYPE_SYS 系统或第三方处理

    .setCropType(CropImgOptions.CROP_TYPE_SElf))

    //比例宽

    .setAspectX(1)

    //比例高

    .setAspectY(2)

    //保存路径

    .setCropPath("/sdcard/test/img")

    //需要裁剪的图片地址

    .setImgPath(path)

    //CropType = CROP_TYPE_SYS 时使用

    .setPathAuthority(pathName)

    //宽高(功能待完善,注:CropType = CROP_TYPE_SYS 可使用)

    .setWidth(with)

    .setHeight(height)

4.图片展示(ShowImgOptions):

ShowImgOptions showImgOptions=new ShowImgOptions()

    //单点图片是否关闭查看

    .setClickToDismiss(true)

    //当前pos

    .setCurrentPos(0)

    //添加图片集合

    .addImgList(resultDatas)

    //是否转场动画

    .setHasTranslateAnim(hasTransAnim)

//如果设置了转场动画,调用以下showImg();没有设置,调用execute()

ImageSelector.with(activity).options(showImgOptions).showImg(imageView,transitionName)

5.图片压缩(CompressOptions):

new CompressOptions()

    //最大宽 (px)

    .setMaxWidth(1500)

    //最大高 (px)

    .setMaxHeight(1500)

    //文件最大 (kb)

    .setMaxSize(500)

    //转换格式为jpg

    .setFormatToJpg(true)

    //图片旋转(部分手机拍照会旋转90度) 开关:true  目标角度:0

    .setRotate(true, 0)

    //压缩路径

    .setCompressPath("/sdcard/test/img");

内部调用说明

压缩调用


CompressTool.newInstance(compressPath,compressOptions,progressListener).compress(arrayList)

压缩说明

第一步-->

采样率压缩:设置BitmapFactory.Options.inSampleSize大小

第二步-->

PNG:尺寸压缩(Config:ARGB_4444,工具:Canvas);

JPG:尺寸压缩(Config:ARGB_565 ,工具:Canvas)+压缩质量(bitmap.compress())

:

1.GIF不做压缩处理

2.尺寸压缩:改变宽高(png,jpg)

3.压缩质量:改变文件大小(适用jpg,png无效)

相关文章

网友评论

    本文标题:Android 图片选择(ImageSelector) (拍照

    本文链接:https://www.haomeiwen.com/subject/ddzxzhtx.html