MediaPicker alternatives and similar packages
Based on the "Image Loading" category.
Alternatively, view MediaPicker alternatives based on common mentions on social networks and blogs.
-
picasso
A powerful image downloading and caching library for Android -
Android-Universal-Image-Loader
Powerful and flexible library for loading, caching and displaying images on Android. -
glide
An image loading and caching library for Android focused on smooth scrolling -
Fresco
An Android library for managing images and the memory they use. -
glide-transformations
An Android transformation library providing a variety of image transformations for Glide. -
picasso-transformations
An Android transformation library providing a variety of image transformations for Picasso -
ImageLoader
Library for async image loading and caching on Android -
Glide Bitmap Pool
Glide Bitmap Pool is a memory management library for reusing the bitmap memory -
webimageloader
Library to handle asynchronous image loading on Android. -
SoBitmap
Bitmap decoder, handle resize & quality & compress stuff following user's configurations. -
AndroidImageLoader
Andorid library that loads images asynchronously into cache using a thread pool
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of MediaPicker or a related project?
README
Media Picker
Please let me know if your application go to production via this link
Media Picker is an Android Libary that lets you to select multiple images, video or voice for Android 4.1 (API 16) +. You can report any issue on issues page. Note: If you speak Arabic, you can submit issues with Arabic language and I will check them. :)
NOTE
This build 2.x.x
will break backward compatibility and there are a lot of changes to improve the performance and fix a lot of Leak memory issues, So please read below document carefully.
Installation
Maven
<dependency>
<groupId>net.alhazmy13.MediaPicker</groupId>
<artifactId>libary</artifactId>
<version>2.4.4</version>
</dependency>
Gradle
dependencies {
implementation 'net.alhazmy13.MediaPicker:libary:2.4.4'
}
Usage
Images
After adding the library, you need to:
- Create an object from
ImagePicker
orVideoPicker
- Override
onActivityResult
to receive the path of image or videos.
Create an ImagePicker
You will need to create a new instance of ImagePicker
. Once the instance are configured, you can call build()
.
new ImagePicker.Builder(MainActivity.this)
.mode(ImagePicker.Mode.CAMERA_AND_GALLERY)
.compressLevel(ImagePicker.ComperesLevel.MEDIUM)
.directory(ImagePicker.Directory.DEFAULT)
.extension(ImagePicker.Extension.PNG)
.scale(600, 600)
.allowMultipleImages(false)
.enableDebuggingMode(true)
.build();
Override onActivityResult
In order to receive the path of image, you will need to override onActivityResult
.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ImagePicker.IMAGE_PICKER_REQUEST_CODE && resultCode == RESULT_OK) {
List<String> mPaths = data.getStringArrayListExtra(ImagePicker.EXTRA_IMAGE_PATH);
//Your Code
}
}
Additional Options
mode
to select the mode, you can choose one of theseCAMERA
,GALLERY
orCAMERA_AND_GALLERY
.mode(ImagePicker.Mode.CAMERA)
extension
You can change the extension of image toPNG
orJPG
.extension(ImagePicker.Extension.PNG)
compressLevel
You can change the quality of image with three different levelsHARD
,MEDIUM
,SOFT
orNONE
.compressLevel(ImagePicker.ComperesLevel.MEDIUM)
directory
You can pass the storage path, or selectDirectory.DEFAULT_DIR
to keep the default path.
.directory(ImagePicker.Directory.DEFAULT)
//OR
.directory(Environment.getExternalStorageDirectory()+"/myFolder")
scale
You can scale the image to a a minimum width and height. This will only be used if compressLevel is set. To avoid OutOfMemory issues, ensure this is used.
.scale(500, 500)
allowMultipleImages
Extra used to select and return multiple images from gallery CANNOT select single image from gallery if this feature was enabled
.allowMultipleImages(true)
enableDebuggingMode
used to print Image Picker Log
.enableDebuggingMode(true)
allowOnlineImages
an option to allow the user to select any image from online resource ex: Google Drive (KNOWN ISSUE) if you enable this option then you cannot select multiple images
.allowOnlineImages(true)
Create an VideoPicker
You will need to create a new instance of VideoPicker
. Once the instance are configured, you can call build()
.
new VideoPicker.Builder(MainActivity.this)
.mode(VideoPicker.Mode.CAMERA_AND_GALLERY)
.directory(VideoPicker.Directory.DEFAULT)
.extension(VideoPicker.Extension.MP4)
.enableDebuggingMode(true)
.build();
Override onActivityResult
In order to receive the path of videos, you will need to override onActivityResult
.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == VideoPicker.VIDEO_PICKER_REQUEST_CODE && resultCode == RESULT_OK) {
List<String> mPaths = data.getStringArrayListExtra(VideoPicker.EXTRA_VIDEO_PATH);
//Your Code
}
}
Additional Options
mode
to select the mode, you can choose one of theseCAMERA
,GALLERY
orCAMERA_AND_GALLERY
.mode(VideoPicker.Mode.CAMERA)
extension
You can change the extension of video toMP4
.extension(VideoPicker.Extension.MP4)
directory
You can pass the storage path, or selectDirectory.DEFAULT_DIR
to keep the default path.
.directory(VideoPicker.Directory.DEFAULT)
//OR
.directory(Environment.getExternalStorageDirectory()+"/myFolder")
enableDebuggingMode
used to print Video Picker Log
.enableDebuggingMode(true)
RxJava 2 for MediaPicker
It's an extenstion that allow you to return an observable from ImagePickerBuilder
or VideoPickerBuilder
, all you need is to add below dependency and then return the observable from ImagePickerHelper
|| VideoPickerHelper
class.
Gradle
dependencies {
implementation 'io.reactivex.rxjava2:rxandroid:(Last_version)'
implementation 'io.reactivex.rxjava2:rxjava:(Last_version)'
implementation 'net.alhazmy13.MediaPicker:rxjava:(Last_version)'
}
new ImagePickerHelper(
new ImagePicker.Builder(Context)
...)
.getObservable()
.subscribe(....);
Theme the pickers
You can change the strings be overwriting below resources in your project.
<string name="media_picker_select_from">Select From:</string>
<string name="media_picker_camera">Camera</string>
<string name="media_picker_gallery">Gallery</string>
<string name="media_picker_ok">Ok</string>
<string name="media_picker_cancel">Cancel</string>
<string name="media_picker_some_permission_is_denied">Some Permission is Denied</string>
<string name="media_picker_you_need_to_grant_access_to">You need to grant access to</string>
<string name="media_picker_read_Write_external_storage"><![CDATA[Read & Write External Storage]]></string>