# lucksiege/pictureselector

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/lucksiege-pictureselector).**

13,592 stars · 3,117 forks · Java · Apache-2.0

## Links

- GitHub: https://github.com/LuckSiege/PictureSelector
- awesome-repositories: https://awesome-repositories.com/repository/lucksiege-pictureselector.md

## Topics

`android` `android-image-selector` `camera` `compress` `glide` `image-compression` `image-picker` `images` `multi-selector` `photo` `photoview` `picker` `picture-selector` `video`

## Description

PictureSelector is an Android media selection library and toolkit for browsing and picking images, videos, and audio files from a device album. It provides a comprehensive framework for capturing new photos and videos via system hardware, extracting media metadata, and managing the resulting files.

The library features a modular architecture that allows for custom media engine implementations to replace default image loading, file compression, and video playback logic. It offers extensive UI customization, enabling the replacement of default layout resources and theme configurations to modify the visual appearance and structure of the selection interface.

The project covers a broad range of media processing capabilities, including aspect ratio cropping, file size compression, and dimension calculation. It also includes utilities for permission management across different operating system versions, mime-type based asset filtering, and sandbox URI mapping to resolve accessible file paths.

## Tags

### Mobile Development

- [Media Selection Interfaces](https://awesome-repositories.com/f/mobile-development/media-selection-interfaces.md) — Provides a complete mobile user interface for browsing and picking single or multiple images and videos from the device album. ([source](https://cdn.jsdelivr.net/gh/lucksiege/pictureselector@version_component/README.md))
- [Android Media Frameworks](https://awesome-repositories.com/f/mobile-development/android-media-frameworks.md) — Implements a framework for cropping, compressing, and resolving file paths for Android media.
- [API-Level Path Resolution Strategies](https://awesome-repositories.com/f/mobile-development/api-level-path-resolution-strategies.md) — Determines the correct file retrieval method by checking the device API level and current configuration settings.
- [Camera Integrations](https://awesome-repositories.com/f/mobile-development/camera-integrations.md) — Integrates with device camera hardware to capture new photos and videos via foreground services.
- [Sandbox URI to Path Mappers](https://awesome-repositories.com/f/mobile-development/sandbox-uri-to-path-mappers.md) — Converts restricted system URIs into accessible local file paths by copying resources to a dedicated internal directory.
- [Custom Camera Capture Activities](https://awesome-repositories.com/f/mobile-development/mobile-capabilities/camera-integration/camera-feed-capture/camera-capture-controllers/custom-camera-capture-activities.md) — Replaces the default camera activity with a custom implementation to control the capture and save processes. ([source](https://github.com/LuckSiege/PictureSelector/wiki/PictureSelector-3.0-%E5%A6%82%E4%BD%95%E8%87%AA%E5%AE%9A%E4%B9%89%E7%9B%B8%E6%9C%BA%EF%BC%9F))
- [Foreground Service Capture Stability](https://awesome-repositories.com/f/mobile-development/mobile-capabilities/camera-integration/camera-feed-capture/camera-capture-controllers/foreground-service-capture-stability.md) — Uses foreground services to maintain process stability while the device hardware records high-resolution photos and videos.

### Part of an Awesome List

- [Android Media Selection](https://awesome-repositories.com/f/awesome-lists/media/android-media-selection.md) — Provides a specialized library for picking images, videos, and audio files from the Android device album.
- [Custom Loading and Caching Logic](https://awesome-repositories.com/f/awesome-lists/media/image-loading-and-caching/custom-loading-and-caching-logic.md) — Implements a modular architecture to replace default device scanning with custom media loading engines. ([source](https://github.com/LuckSiege/PictureSelector/wiki/PictureSelector-3.0-%E5%A6%82%E4%BD%95%E5%8A%A0%E8%BD%BD%E8%87%AA%E5%AE%9A%E4%B9%89%E6%95%B0%E6%8D%AE%E6%BA%90%EF%BC%9F))

### Data & Databases

- [Media Metadata Querying](https://awesome-repositories.com/f/data-databases/media-metadata-querying.md) — Enables extraction of album and media metadata directly from the Android device data source. ([source](https://cdn.jsdelivr.net/gh/lucksiege/pictureselector@version_component/README.md))
- [Custom Media Processing Engines](https://awesome-repositories.com/f/data-databases/runtime-backend-switching/media-engine-switching/custom-media-processing-engines.md) — Allows replacing default image loading, file compression, and video playback logic with custom engine implementations. ([source](https://github.com/LuckSiege/PictureSelector/wiki/PictureSelector-3.0-%E5%8A%9F%E8%83%BDapi%E8%AF%B4%E6%98%8E))

### Development Tools & Productivity

- [Media Asset MIME Filters](https://awesome-repositories.com/f/development-tools-productivity/local-file-syncing/large-file-scanners/size-based-file-filtering/mime-type-and-extension-filters/media-asset-mime-filters.md) — Filters device media queries by matching specific file extensions and metadata to restrict selectable content.
- [Media Selection Previews](https://awesome-repositories.com/f/development-tools-productivity/developer-utilities-libraries/workflow-productivity-enhancers/developer-productivity-utilities/developer-productivity/selection-content-previews/media-selection-previews.md) — Includes a preview interface for images, videos, and audio files to help users verify media before selection. ([source](https://cdn.jsdelivr.net/gh/lucksiege/pictureselector@version_component/README.md))

### Graphics & Multimedia

- [Live Capture and Recording](https://awesome-repositories.com/f/graphics-multimedia/audio-music/media-capture-and-playback/live-capture-and-recording.md) — Integrates with the camera and microphone to create photos, videos, and audio recordings within the application. ([source](https://github.com/LuckSiege/PictureSelector/wiki/PictureSelector-3.0-%E5%8A%9F%E8%83%BDapi%E8%AF%B4%E6%98%8E))
- [Basic Media Editing](https://awesome-repositories.com/f/graphics-multimedia/basic-media-editing.md) — Allows users to preview media in full screen and apply basic modifications like cropping and watermarking. ([source](https://github.com/LuckSiege/PictureSelector/wiki/PictureSelector-3.0-%E5%8A%9F%E8%83%BDapi%E8%AF%B4%E6%98%8E))
- [Media Aspect Ratio Croppers](https://awesome-repositories.com/f/graphics-multimedia/media-aspect-ratio-croppers.md) — Trims images to specific aspect ratios and saves the output to a designated directory. ([source](https://github.com/LuckSiege/PictureSelector/wiki/PictureSelector-3.0-%E5%A6%82%E4%BD%95%E8%A3%81%E5%89%AA%EF%BC%9F))
- [Media Asset Resizing](https://awesome-repositories.com/f/graphics-multimedia/media-asset-resizing.md) — Provides utilities for cropping, compressing, and resizing images and videos to optimize file sizes.
- [Media Cropping and Compression Toolkits](https://awesome-repositories.com/f/graphics-multimedia/media-cropping-and-compression-toolkits.md) — Trims images to specific dimensions and applies file compression to optimize asset size. ([source](https://cdn.jsdelivr.net/gh/lucksiege/pictureselector@version_component/README.md))
- [Process-Level Recording Stability](https://awesome-repositories.com/f/graphics-multimedia/media-processing-analysis/media-manipulation/media-processing-workflows/video-transformation-enhancement/chunked-video-processing/recording-stabilization/process-level-recording-stability.md) — Captures photos and videos using system hardware while maintaining process stability via foreground services. ([source](https://github.com/LuckSiege/PictureSelector/wiki/PictureSelector-3.0-%E6%9D%83%E9%99%90%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E))
- [File Compression](https://awesome-repositories.com/f/graphics-multimedia/media-processing-analysis/media-manipulation/media-processing/video-analysis-processing/hardware-accelerated-video-pipelines/file-compression.md) — Reduces the file size of chosen images or videos using a custom compression engine. ([source](https://github.com/LuckSiege/PictureSelector/wiki/PictureSelector-3.0-%E5%A6%82%E4%BD%95%E5%8E%8B%E7%BC%A9%EF%BC%9F))

### Operating Systems & Systems Programming

- [Media Path Resolution](https://awesome-repositories.com/f/operating-systems-systems-programming/filesystem-path-resolution/path-resolution-caches/canonical-path-resolution/media-path-resolution.md) — Resolves absolute, compressed, or cropped file paths according to the device's Android API level and configuration. ([source](https://github.com/LuckSiege/PictureSelector/wiki/PictureSelector-3.0-LocalMedia%E8%AF%B4%E6%98%8E))
- [URI to Path Mapping](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/process-isolation/sandbox-resource-management/uri-to-path-mapping.md) — Transforms restricted sandbox URIs into accessible local file paths by copying assets to a dedicated internal directory. ([source](https://github.com/LuckSiege/PictureSelector/wiki/PictureSelector-3.0-%E5%A6%82%E4%BD%95%E8%AE%BF%E9%97%AE%E6%B2%99%E7%9B%92%E5%A4%96%E8%B5%84%E6%BA%90%EF%BC%9F))

### User Interface & Experience

- [Interface Layout Customization](https://awesome-repositories.com/f/user-interface-experience/app-visual-identity-customizers/interface-layout-customization.md) — Enables replacing default layout resources for screens and grids with custom design files to change the selection interface structure. ([source](https://github.com/LuckSiege/PictureSelector/wiki/PictureSelector-3.0-%E5%A6%82%E4%BD%95%E9%87%8D%E8%BD%BD%E5%B8%83%E5%B1%80%EF%BC%9F))
- [Interface Appearance Customizations](https://awesome-repositories.com/f/user-interface-experience/interface-appearance-customizations.md) — Allows changing the visual look of the selection interface using theme configurations or layout resources. ([source](https://cdn.jsdelivr.net/gh/lucksiege/pictureselector@version_component/README.md))
- [Theming and Layouts](https://awesome-repositories.com/f/user-interface-experience/interface-appearance-customizations/theming-and-layouts.md) — Allows replacing default XML layout files and theme configurations to customize the visual appearance of selection screens.
- [Custom Select Styling](https://awesome-repositories.com/f/user-interface-experience/multi-select-inputs/select-inputs/custom-select-styling.md) — Provides the ability to modify colors, fonts, and backgrounds for the selection interface and navigation components. ([source](https://github.com/LuckSiege/PictureSelector/wiki/PictureSelector-3.0-%E4%B8%BB%E9%A2%98api%E8%AF%B4%E6%98%8E))
- [Customizable UI Components](https://awesome-repositories.com/f/user-interface-experience/customizable-ui-components.md) — Provides a modular selection interface with support for custom layout resources and theme configurations.
- [Media Galleries](https://awesome-repositories.com/f/user-interface-experience/media-galleries.md) — Offers a customizable media gallery interface with support for tailored layouts, themes, and styling.

### Content Management & Publishing

- [Media Selection Filters](https://awesome-repositories.com/f/content-management-publishing/media-management/media-selection-filters.md) — Provides granular filtering of media assets by mime type, file size, and duration to ensure compatible selections. ([source](https://github.com/LuckSiege/PictureSelector/wiki/PictureSelector-3.0-%E5%8A%9F%E8%83%BDapi%E8%AF%B4%E6%98%8E))

### Security & Cryptography

- [Media Access Permissions](https://awesome-repositories.com/f/security-cryptography/permission-based-access-control/media-access-permissions.md) — Manages storage and camera access requests across various Android versions to ensure secure media access.
- [Permission Interception Listeners](https://awesome-repositories.com/f/security-cryptography/permission-systems/permission-request-workflows/permission-interception-listeners.md) — Provides a mechanism to override default system permission flows using custom listener interfaces for verification and request logic.

### Software Engineering & Architecture

- [Abstract Engine Interfaces](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/extensibility/plugin-architectures/registration-discovery-systems/interface-based-module-registries/abstract-engine-interfaces.md) — Implements abstract engine interfaces to allow interchangeable modules for image loading, compression, and video playback.
