Skip to main content

ImagePicker Library Android

Introduction to ImagePicker in Kotlin Android

In Android development, working with images is a common requirement. The ImagePicker library provides an easy way to select images from the user's device gallery or capture new ones using the device's camera. In this tutorial, we will explore the features, setup, and usage of ImagePicker in Kotlin Android.

Features of ImagePicker

The ImagePicker library offers the following features:

  1. Image selection: Allows users to pick images from the device gallery.
  2. Camera capture: Enables users to capture new images using the device's camera.
  3. Customization: Provides options to customize the image picker UI, such as changing the toolbar color or specifying the number of images to be selected.
  4. Permissions handling: Automatically handles the necessary permissions for accessing the device's camera and gallery.
  5. Image compression: Supports image compression to reduce file size and optimize storage usage.


To integrate the ImagePicker library into your Kotlin Android project, follow these steps:

  1. Add the following dependency to your app-level build.gradle file:
dependencies {
implementation 'com.github.dhaval2404:imagepicker:1.7'
  1. Sync your project with Gradle files to download the library.


1. Launching the ImagePicker

To launch the ImagePicker and allow the user to select an image, use the following code:


This code snippet opens the gallery and allows the user to select a single image. If you want to allow multiple image selection, you can use the .galleryMimeTypes() method instead.

2. Handling the ImagePicker Result

To handle the selected image(s), override the onActivityResult method in your activity or fragment:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == ImagePicker.REQUEST_CODE && resultCode == Activity.RESULT_OK) {
val images = data?.getParcelableArrayListExtra<Image>(ImagePicker.EXTRA_IMAGES)
// Handle the selected image(s) here

The ImagePicker.EXTRA_IMAGES constant provides the selected image(s) as a list of Image objects.

3. Customizing the ImagePicker

ImagePicker provides various customization options. For example, you can change the toolbar color, specify the number of images to be selected, or restrict selection to specific image MIME types.

.galleryMimeTypes(arrayOf("image/png", "image/jpeg"))

In the above code snippet, the toolbar color is set to red, only PNG and JPEG images are allowed for selection, and the user can select up to five images.

4. Camera Capture

To capture a new image using the device's camera, use the .cameraOnly() method:


This code snippet opens the camera and allows the user to capture a new image.

5. Image Compression

ImagePicker supports image compression to reduce file size. By default, compression is enabled with a quality of 80%. You can customize the compression settings using the .compress(maxSize: Int, quality: Int) method:

.compress(1024) // Maximum file size in KB

In the above code snippet, the maximum file size is set to 1024 KB.


In this tutorial, we explored the ImagePicker library in Kotlin Android. We learned about its features, setup process, and various usage scenarios. ImagePicker simplifies the process of image selection and camera capture in Android apps, offering customization options and handling permissions automatically. Now you can enhance your app by allowing users to easily select and capture images.