ImagePicker

Additional

Language
Kotlin
Version
3.0.0-beta1 (Apr 24, 2021)
Created
Oct 15, 2016
Updated
Jun 20, 2021
Owner
Esa Firman (esafirm)
Contributors
Matías Dumrauf (mdumrauf)
Esa Firman (esafirm)
Osama Raddad (osama-raddad)
Yasir Ali (yasiralijaved)
Sergey Chuvashev (arok)
Rainer-Lang
Noor Dawod (noordawod)
LinkOut
Yaroslav Erohin (ysoftware)
Laszlo Modis (modislaszlox2)
Philippe David (pdavid0)
Pavel Remygailo (pavlus)
Paul Rybitskyi (mars885)
Douglas Iacovelli (douglasiacovelli)
Gilyoung Kim (xpdlf1004)
Mohamed Hamdan (mnayef95)
Idan Ben Shalom (idish)
marekchen
Show all (39)39
Activity
Badge
Generate
Download
Source code
APK file

Commercial

Android Image Picker

No config yet highly configurable image picker for Android

Screenshot

Click to see how image picker looks…

Download

Add this to your project's build.gradle

allprojects {
    repositories {
        maven { url "https://jitpack.io" }
    }
}

And add this to your module's build.gradle

dependencies {
  implementation 'com.github.esafirm:android-image-picker:x.y.z'
}

change x.y.z to version in the release page

Usage

For full example, please refer to the sample app.

Also you can browse the issue labeled as question here

Start image picker activity

The simplest way to start

val launcher = registerImagePicker {
  // handle result here
}

launcher.launch()

Complete features of what you can do with ImagePicker

val config = ImagePickerConfig {
  mode = ImagePickerMode.SINGLE // default is multi image mode
  language = "in" // Set image picker language
  theme = R.style.ImagePickerTheme

  // set whether pick action or camera action should return immediate result or not. Only works in single mode for image picker
  returnMode = if (returnAfterCapture) ReturnMode.ALL else ReturnMode.NONE

  isFolderMode = folderMode // set folder mode (false by default)
  isIncludeVideo = includeVideo // include video (false by default)
  isOnlyVideo = onlyVideo // include video (false by default)
  arrowColor = Color.RED // set toolbar arrow up color
  folderTitle = "Folder" // folder selection title
  imageTitle = "Tap to select" // image selection title
  doneButtonText = "DONE" // done button text
  limit = 10 // max images can be selected (99 by default)
  isShowCamera = true // show camera or not (true by default)
  savePath = ImagePickerSavePath("Camera") // captured image directory name ("Camera" folder by default)
  savePath = ImagePickerSavePath(Environment.getExternalStorageDirectory().path, isRelative = false) // can be a full path

  excludedImages = images.toFiles() // don't show anything on this selected images
  selectedImages = images  // original selected images, used in multi mode
}

If you want to call it outside Activity or Fragment, you can get the Intent with createImagePickerIntent

Please note: handling in onActivityResult is not recommended since it's already deprecated in favor of the new result API

val intent = createImagePickerIntent(context, ImagePickerConfig())
startActivityForResult(intent, RC_IMAGE_PICKER)

Receive result

when you're done picking images, result will be returned on launcher callback with type List<Image>. This list cannot be null but can be empty

val launcher = registerImagePicker { result: List<Image> ->
  result.forEach { image ->
    println(image)
  }
}    

Camera Only

Use CameraOnlyConfig instead of ImagePickerConfig

val launcher = registerImagePicker { }
launcher.launch(CameraOnlyConfig())

You also still can use the DefaultCameraModule but discouraged to do it.

Wiki

Version 2.x.x

If you still use the previous version, you can check 2.x branch in here

Support Me!

I would make myself more commited to this repo and OSS works in general.

Would you help me achieving this goals?

Credits

License

MIT @ Esa Firman