{"id":13643932,"url":"https://github.com/martin90s/ImagePicker","last_synced_at":"2025-04-21T06:32:06.376Z","repository":{"id":49901613,"uuid":"79429824","full_name":"martin90s/ImagePicker","owner":"martin90s","description":"Super Image Picker is a powerful image selector. Support for huge image preview (such as 10000 * 5000px), support for image cropping, configurable avatar mode and normal mode, support for  a variety of image load library","archived":false,"fork":false,"pushed_at":"2017-12-21T02:52:12.000Z","size":160,"stargazers_count":887,"open_issues_count":16,"forks_count":151,"subscribers_count":38,"default_branch":"master","last_synced_at":"2024-11-09T16:43:23.012Z","etag":null,"topics":["android","imagepicker","photo-gallery"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/martin90s.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-01-19T08:00:44.000Z","updated_at":"2024-11-02T04:35:20.000Z","dependencies_parsed_at":"2022-08-29T19:22:25.502Z","dependency_job_id":null,"html_url":"https://github.com/martin90s/ImagePicker","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martin90s%2FImagePicker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martin90s%2FImagePicker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martin90s%2FImagePicker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martin90s%2FImagePicker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/martin90s","download_url":"https://codeload.github.com/martin90s/ImagePicker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250008231,"owners_count":21359951,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","imagepicker","photo-gallery"],"created_at":"2024-08-02T01:01:55.010Z","updated_at":"2025-04-21T06:32:02.200Z","avatar_url":"https://github.com/martin90s.png","language":"Java","readme":"# \u003cimg src=\"http://7xpb9x.com1.z0.glb.clouddn.com/2017/01/19/c4cb41c69d38f0284c70ba32c2839983.png\" width=48 /\u003eImagePicker\n\n[![](https://jitpack.io/v/martin90s/ImagePicker.svg)](https://jitpack.io/#martin90s/ImagePicker)  [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-SImagePicker-brightgreen.svg?style=flat)](https://android-arsenal.com/details/1/5129)\n\n\n## 效果图\n### 第一张头像模式，第二张选择多张图片（包括动画和顺畅的跳转），第三张是分片加载超大图（19.5M，10000*5000px）\n\n![image](https://github.com/martin90s/ScreenShot/blob/master/choose_avatar.gif)\n![image](https://github.com/martin90s/ScreenShot/blob/master/choose_image.gif)\n![image](https://github.com/martin90s/ScreenShot/blob/master/huge_iamge.gif)\n\n项目介绍请参考\n* [Android-如何开发一个功能强大的图片选择器](http://www.jianshu.com/p/81aeb7e2eaa9)\n\n致谢\n* [subsampling-scale-image-view](https://github.com/davemorrissey/subsampling-scale-image-view) \n* y总的页面切换动画\n\n\n# 如何添加\n### Gradle\n#### 1.在Project的build.gradle 中添加仓库地址\n``` gradle\n // JitPack仓库地址\n maven { url \"https://jitpack.io\" }\n```\n\n示例：\n``` gradle\nallprojects {\n    repositories {\n        jcenter()\n        // JitPack仓库地址\n        maven { url \"https://jitpack.io\" }\n    }\n}\n```\n#### 2.在app目录下的build.gradle中添加依赖\n```gradle\n    //SImagePicker\n\tcompile 'com.github.martin90s:ImagePicker:v1.3.2'\n```\n\n# 如何使用\n#### 1.首先初始化（推荐在Application的oncreate中调用）\n```java\n SImagePicker.init(new PickerConfig.Builder().setAppContext(this)\n \t\t\t.setImageLoader(new FrescoImageLoader())\n\t\t\t.setToolbaseColor(getColor(R.color.colorPrimary))\n\t\t\t.build());\n```\n#### 2.在需要选择图片的地方调用\n```java\n SImagePicker\n            .from(MainActivity.this)\n            .maxCount(9)\n            .rowCount(3)\n            .pickMode(SImagePicker.MODE_IMAGE)\n            .fileInterceptor(new SingleFileLimitInterceptor())\n            .forResult(REQUEST_CODE_IMAGE);\n```\n\n\n# 可配置项\n#### 1.全局配置（即初始化时传入的PickerConfig,此配置作用于SImagePicker整个使用过程）\n| 配置参数  | 参数含义  |\n| ------------ | ------------ |\n| setImageLoader(ImageLoader)  |  使用的图片加载器。demo工程中实现了Fresco和Glide两种ImageLoader,可以参考 |\n| setToolbarColor(int)  |  Picker的主色调，默认值是App的primaryColor |\n| setAppContext(Context) |  Picker内部用到的Context，传入ApplicationContext即可 |\n\n#### 2.单次配置（即每次调用SImagePicker时传入的参数，此参数只对这次调用生效）\n|  配置参数  | 参数含义  |\n| ------------ | ------------ |\n|  from(Activity or Fragment) | 调用图片选择器可从Activity或者Fragment进入，最后的结果会在onActivityResult()返回，现在返回的结果有两个值，用户选择的图片的路径列表data.getStringArrayListExtra(PhotoPickerActivity.EXTRA_RESULT_SELECTION);用户是否选择了原图data.getBooleanExtra(PhotoPickerActivity.EXTRA_RESULT_ORIGINAL, false);\n|\n| maxCount(int) | 此次选择允许的最大选择数量，默认是1.比如发朋友圈最多选择9张图就传9  |\n| rowCount(int)  | 图片列表单排展示多少张图  |\n| setSelected(List\u003cString\u003e) |  默认已经被选中的图片 |\n|  pickMode(int) | 选图的模式，现在有头像模式和普通模式两种，头像模式选中图片后默认会跳到图片裁剪页面且默认只能选择一张  |\n| cropFilePath(String)  | 头像模式下裁剪图片存放地址  |\n| showCamera(boolen)  | 是否要展示拍照入口  |\n| pickText(int)  | Picker里右下角展示的文字信息（比如配置选择，发送，完成）  |\n| fileInterceptor(FileChooseInterceptor) |  图片过滤器，比如用户选择的单张图片大小有限制，即可写在这个拦截器中，当用户选择过大图片时可以提示并且过滤 |\n|forResult(int requestCode) | 打开图片选择器，并且传入requestCode\n\n##获取结果\n### 在调用图片选择器的Fragment或者Activity中\n```java\n@Override\n  protected void onActivityResult(int requestCode, int resultCode, Intent data) {\n    super.onActivityResult(requestCode, resultCode, data);\n    if (resultCode == Activity.RESULT_OK \u0026\u0026 requestCode == REQUEST_CODE_IMAGE) {\n      final ArrayList\u003cString\u003e pathList =\n          data.getStringArrayListExtra(PhotoPickerActivity.EXTRA_RESULT_SELECTION);\n      final boolean original =\n          data.getBooleanExtra(PhotoPickerActivity.EXTRA_RESULT_ORIGINAL, false);\n    }\n  }\n```\n\n##TODO\n* 增加一个普通模式。由于现在预览为了支持超大图所以选择了SubsamplingView。后续增加一个不支持超大图的模式，会更加流畅\n* Glide下由于glide的缓存策略，跳转动画第一次播放会闪一下，下版修复此问题\n\n##联系方式\n* 邮箱地址： martinhi2016@gmail.com\n","funding_links":[],"categories":["图片"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartin90s%2FImagePicker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmartin90s%2FImagePicker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartin90s%2FImagePicker/lists"}