explaingit

lucksiege/pictureselector

13,593JavaAudience · developerComplexity · 2/5Setup · easy

TLDR

An Android library that adds a fully-featured image, video, and audio picker to your app with cropping, compression, camera capture, and album browsing, compatible with Android 5 through 13 and works with Glide, Picasso, or Coil.

Mindmap

mindmap
  root((PictureSelector))
    What It Does
      Android media picker
      Images videos audio
      Camera capture
    Key Features
      Crop and compress
      Fragment embedding
      Headless data mode
    Image Loaders
      Glide
      Picasso
      Coil
    Compatibility
      Android 5 to 13
      Java and Kotlin
      Gradle and Maven
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Add a photo and video picker to an Android app with one Gradle dependency and a few lines of Java or Kotlin code.

USE CASE 2

Let users crop and compress images before uploading, reducing server storage costs and upload time.

USE CASE 3

Embed the media picker as a fragment inside an existing screen instead of launching it as a separate activity.

USE CASE 4

Query a device's album and media lists programmatically without showing any UI, using the headless data-source mode.

Tech stack

JavaKotlinAndroidGlidePicassoCoil

Getting it running

Difficulty · easy Time to first run · 30min
No license information is provided in the explanation.

In plain English

PictureSelector is an Android library that gives your app a full-featured media picker. Users can browse their photo albums, select images, videos, or audio files, take new photos with the camera, crop and resize selections, and compress files before they are returned to the app. The library targets Android 5.0 and later, including Android 13's updated storage permissions. Adding the library to an Android project takes a single line in Gradle or Maven. Once it is installed, you open the picker with a few lines of Java or Kotlin code, choose what type of media to allow (images, video, audio, or all three), attach an image-loading engine, and provide a callback to receive the selected files. The library ships with adapters for three popular image-loading libraries: Glide, Picasso, and Coil. You pick whichever one your project already uses. The picker can run in several modes. The full gallery mode lets users browse and select from their existing media. A camera-only mode opens the device camera directly. You can also embed the picker as a fragment inside any existing view, which is useful when you want to build the selection UI into your own screen layout rather than launching a separate activity. There is also a headless data-source mode that lets you query album and media lists programmatically without showing any UI at all. Previewing selected files is supported too. The library can display images and videos in a built-in preview screen, with optional delete and download actions. Online video preview requires setting the cleartext traffic flag in the Android manifest. The library handles the Android runtime permission requests for camera, storage, and audio access, adapting to the different permission models across Android versions. Theming and visual customization are documented in the project wiki. ProGuard rules are provided to keep the library working in minified builds.

Copy-paste prompts

Prompt 1
Show me how to integrate PictureSelector into my Android app using Gradle and open a photo picker that returns compressed JPEGs via a callback.
Prompt 2
How do I configure PictureSelector to allow both image and video selection with a maximum of 5 items, using Glide as the image loader?
Prompt 3
Write the ProGuard rules needed to keep PictureSelector working in a minified Android release build.
Prompt 4
How do I embed PictureSelector as a Fragment inside my own Activity layout instead of launching it as a separate full-screen activity?
Open on GitHub → Explain another repo

← lucksiege on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.