图片选择器ImagePicker

ImagePicker是一个Android版本的图片视频选择组件。
GitHub仓库地址

引入

gradle

allprojects {repositories {maven { url 'https://jitpack.io' }}
}implementation 'com.github.DL-ZhangTeng:ImagePicker:1.3.1'//使用的三方implementation 'com.github.bumptech.glide:glide:4.12.0'implementation 'com.yalantis:ucrop:2.2.0'implementation 'com.github.DL-ZhangTeng:RequestPermission:1.2.0'implementation 'com.github.DL-ZhangTeng.BaseLibrary:utils:1.3.5'

效果图



属性

属性名 描述
multiSelect 是否单选,默认true
maxImageSelectable 多选时最多选多少张,默认9
maxVideoSelectable 多选时最多选多少个,默认1
isShowCamera 是否在第一格显示拍照录制,默认true
filePath 图片剪裁保持地址,默认"/" + BuildConfig.APPLICATION_ID + “/imagePicker/ImagePickerPictures”
provider 文件提供者,默认BuildConfig.APPLICATION_ID + “.FileProvider”
pathList 图片保持List
isVideoPicker 是否可选择视频,默认true
isImagePicker 是否可选择图片,默认true
isMirror 摄像拍照是否镜像
maxWidth 最大图片宽度,默认1920
maxHeight 最大图片高度,默认1920
maxImageSize 图片大小,默认15M
maxVideoLength 视频长度,默认15000ms
maxVideoSize 视频大小,默认45M
imagePickerType 弹出类型,默认图片选择器
isCrop 是否开启剪裁,默认false
cropAspectRatio 剪裁比率(w/h),默认0
pickerThemeColorRes 选择器主题色
cropThemeColorRes 剪裁器主题色
pickerTitleColorRes 选择器标题色
cropTitleColorRes 剪裁器标题色
pickerBackRes 选择器返回按钮
pickerFolderRes 选择器文件夹选择下拉图标

使用

  @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ImagePickerConfig imagePickerConfig = new ImagePickerConfig.Builder().imageLoader(new GlideImageLoader()) //图片加载器.iHandlerCallBack(new HandlerCallBack())    //图片选择器生命周期监听(直接打开摄像头时无效).multiSelect(true)                 //是否多选.isVideoPicker(true)              //是否选择视频 默认false.isImagePicker(true).imagePickerType(ImagePickerEnum.PHOTO_PICKER) //选择器打开类型.isMirror(false)                              //是否旋转镜头.maxImageSelectable(9)                        //图片可选择数.maxHeight(1920)                              //图片最大高度.maxWidth(1920)                               //图片最大宽度.maxImageSize(15)                             //图片最大大小Mb.maxVideoLength(5 * 1000).maxVideoSize(180).isCrop(true).pathList(new ArrayList<>())    //已选择图片列表.pickerThemeColorRes(R.color.colorAccent).pickerTitleColorRes(R.color.image_picker_white).cropThemeColorRes(R.color.colorAccent).cropTitleColorRes(R.color.colorPrimary).pickerBackRes(R.mipmap.image_picker_back_black).build();findViewById(R.id.iv).setOnClickListener(v -> {//重新打开选择器时不需要默认选中已选择的图片//imagePickerConfig.getPathList().clear();ImagePickerOpen.getInstance().setImagePickerConfig(imagePickerConfig).pathList(new ArrayList<>()) //设置默认选中的图片列表.open(this, 100);});}@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);List<String> result = new ArrayList<>();if (resultCode == RESULT_OK && data != null) {if (requestCode == 100) {if (data.hasExtra(Constant.PICKER_PATH)) {List<String> resultPicker = data.getStringArrayListExtra(Constant.PICKER_PATH);if (resultPicker != null)result.addAll(resultPicker);}}if (requestCode == 100) {if (data.hasExtra(Constant.CAMERA_PATH)){List<String> resultCamera = data.getStringArrayListExtra(Constant.CAMERA_PATH);if (resultCamera != null)result.addAll(resultCamera);}}}if (resultCode == Constant.CAMERA_ERROR_CODE) {Toast.makeText(context, "请检查相机权限", Toast.LENGTH_SHORT).show();}if (!result.isEmpty()) {ImagePickerOpen.getInstance().getImagePickerConfig().getImageLoader().loadImage(this, findViewById(R.id.iv), result.get(0));}}
public class HandlerCallBack implements IHandlerCallBack<ImageInfo> {private String TAG = "---ImagePicker---";List<ImageInfo> photoList = new ArrayList<>();@Overridepublic void onStart() {Log.i(TAG, "onStart: 开启");}@Overridepublic void onSuccess(List<ImageInfo> photoList) {this.photoList = photoList;Log.i(TAG, "onSuccess: 返回数据");}@Overridepublic void onCancel() {Log.i(TAG, "onCancel: 取消");}@Overridepublic void onFinish(List<ImageInfo> selectImage) {}@Overridepublic void onError() {Log.i(TAG, "onError: 出错");}
}

混淆

-keep public class com.zhangteng.**.*{ *; }

历史版本

版本 更新 更新时间
v1.3.1 继承Utils库中的接口 2022/7/5 at 9:21
v1.3.0 使用base的utils库 2022/1/21 at 15:42
v1.2.0 常量名&值更换 2022/1/5 at 23:42
v1.1.9 修改依赖库&选择图片回调 2022/01/02 at 21:55
v1.1.8 开放openNoPermission方法,更新权限请求库版本 2021/11/18 at 15:44
v1.1.7 图片视频存储地址修改为公共媒体地址(targetSdkVersion 29+时在Android10+有文件访问限制) 2021/7/1 at 11:24
v1.1.6 1.放弃非AndroidX维护;2.增加默认选中图片集合;3.使用jitpack仓库 2021/6/7 at 13:35
v1.0.10/v1.1.5 1.照片存储空间修改到Android/data/${applicationId}/files/imagePicker文件夹下;2.更新权限请求库版本 2021/2/5 at 15:49
v1.0.9/v1.1.4 处理部分机型未释放相机bug&忽略目标版本为29时的分区存储 2020/8/24 at 13:58
v1.0.8/v1.1.3 增加文件夹选择下拉图标 2020/8/21 at 10:50
v1.0.7/v1.1.2 根据使用功能动态请求权限 2020/8/18 0018 at 上午 10:50
v1.0.6/v1.1.1 修复请求权限失败时崩溃bug 2020/8/17 0017 at 下午 17:31
v1.1.0 迁移到androidx 2020/7/22 0022 at 上午 11:54
v1.0.5 多媒体查找逻辑调整 2020/6/17 0017 at 下午 17:37
v1.0.4 视频做最大限制(显示的最大视频长度和录制的最大长度一致) 2020/6/2 0002 at 上午 11:00
v1.0.3 imageInfo实现Parcelable接口 2020/5/27 0027 at 下午 14:39
v1.0.2 更全的样式自定义 2020/5/20 0020 at 下午 17:13
v1.0.0 初版 2020/5/15 0015 at 下午 16:14

赞赏

如果您喜欢ImagePicker,或感觉ImagePicker帮助到了您,可以点右上角“Star”支持一下,您的支持就是我的动力,谢谢

联系我

邮箱:763263311@qq.com/ztxiaoran@foxmail.com

License

Copyright © [2020] [Swing]

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the “Software”), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

图片选择器ImagePicker相关推荐

  1. react antd-mobile v2图片选择器ImagePicker压缩图片上传腾讯云COS处理方案

    本文介绍:react移动端 antd-mobile V2版本使用图片选择器 ImagePicker时,前端压缩图片并且上传腾讯云COS 如果不上传腾讯云,纯选择压缩,可查看:antd-mobile-v ...

  2. antdesign-mobile 图片选择器ImagePicker反写

    今天遇见一个问题,是把base64数据重新反写倒ImagePicker中,稍微研究了一下 首先需要先把base64进行转换. // base64 to file const dataURLtoFile ...

  3. Android-如何开发一个功能强大的图片选择器

    图片选择器是Android开发中会经常用到的一个功能,特别对于社交类的应用,比如头像设置,比如发图片.自然ImagePicker的轮子很多,今天介绍一个功能强大的轮子SImagePicker 介绍 首 ...

  4. React Native - 使用图片选择器react-native-image-picker拍照、选照片

    http://www.hangge.com/blog/cache/detail_1617.html React Native - 使用图片选择器react-native-image-picker拍照. ...

  5. Android 图片选择器和图片裁剪库

    前言:现在大部分的App都支持上传图片和裁剪图片的功能,比如设置用户头像.聊天发送图片.发表动态.论坛帖子等.上传图片需要先从选择手机中选择要上传的图片,所以图片选择器在App中是很常见的组件,一般的 ...

  6. 小红书图片剪裁框架+微信图片选择器+超高清大图预览+图片自定义比例剪裁,支持 UI 自定义、支持跨进程回调

    YImagePicker 项目地址:yangpeixing/YImagePicker 简介: 小红书图片剪裁框架+微信图片选择器+超高清大图预览+图片自定义比例剪裁,支持 UI 自定义.支持跨进程回调 ...

  7. 小红书图片剪裁框架+微信图片选择器+超高清大图预览,高级Android程序员必会

    .setFirstImageUrl(null)//设置上一次选中的图片地址 .setVideoSinglePick(true)//设置视频单选 .setCropPicSaveFilePath(&quo ...

  8. 集小红书图片剪裁+微信图片选择器+自定义图片剪裁于一体的YImagePicker

    目录 关于YImagePicker 引入依赖 核心原理 效果图集 点击查看详细API文档 微信图片选择 小红书图片选择 预览 拍照 拍摄视频 调用选择器并剪裁 拍照并剪裁 直接剪裁 提供媒体数据--支 ...

  9. Android 超高仿微信图片选择器 图片该这么加载

    2019独角兽企业重金招聘Python工程师标准>>> 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39943 ...

  10. 仿照微信的效果,实现了一个支持多选、选原图和视频的图片选择器,适配了iOS6-10系统,3行代码即可集成....

    重要提示: 1. 1.9.0版本已发布,移除了"prefs:root="的调用,这个API已经被列为私有API,请大家尽快升级.其它同样使用了该API的库大家可以检查下,比如著名的 ...

最新文章

  1. putty秘钥验证登录和xshell秘钥验证登录
  2. 基于第三方开源库的OPC服务器开发指南(2)——LightOPC的编译及部署
  3. leetcode4两数相加
  4. Angular 动态控制 aside 标签显示和隐藏的一个例子
  5. 已从事软件测试一年,感觉依然很菜,只会基础的功能测试,想进一步学习,有没有好的建议呢?
  6. linux进程跑飞了,【Shell】Linux信号(二)
  7. php生成option,php递归实现无限分类生成下拉列表的函数
  8. THINKPHP_关联模型MANY_TO_MANY
  9. Docker从理论到实践(一)------基础知识必备
  10. C语言程序设计:图书管理系统(超详细有登录系统,附代码和实验报告)
  11. linux镜像下载与安装
  12. AI:从游戏引擎--到AI
  13. 云硬盘备份 | 概览
  14. Note: NumExpr detected 12 cores but NUMEXPR_MAX_THREADS not set, so enforcing safe limit of 8. NumEx
  15. java微信公众号获取地理位置_Java微信公众平台开发之获取地理位置
  16. 2023年上海大学文物与博物馆考研上岸前辈初复试备考经验指导
  17. python 3.10.1 安装教程
  18. 电脑计算机未指定的错误,Win7系统的电脑为什么会出现未指定的错误
  19. Apriori算法(矩阵)
  20. 【图像叠加】将一个图片放到另一个图片上

热门文章

  1. django rest framework serializer 增加自定义字段
  2. ideaIU-2021.3配置Git/SVN
  3. 谷歌浏览器安装stylish插件笔记
  4. 数据结构算法之关键路径
  5. 西部数据移动硬盘真伪测试软件,我的西数硬盘是真的吗?网购西数移动硬盘辨别真伪的方法...
  6. PyTorch——手写数字识别
  7. JavaScript开发必备!这四款静态代码分析工具你了解吗
  8. 附资料:工程总承包项目管理流程图(全套)
  9. cAdvisor的安装使用(Docker)
  10. 【二级等保】二级等保需要做日志审计吗?