Anroid library handling media picker from camera and gallery
- Select Image From Gallery
- Capture Image From Gallery
- Select Video From Gallery
- Multi Choose Images
- Select File From Storage
- We can using this library for compressing images in android (befor upload it to server)
- Compressing Image in small sizes without losing image quality
| From Activity | From Fragment | Take Permissions |
|---|---|---|
![]() | ![]() | ![]() |
| Customize Your Component | Capture Image | Easy Getting Media Path |
|---|---|---|
![]() | ![]() | ![]() |
| Multi Choose Images |
|---|
Gradle:
repositories { maven { url 'https://jitpack.io' } } build.gradle (app) android { . . . . // for solving Problem duplicate class androidx.lifecycle.viewmodel found in modules add this // add this only if you import the same version of lifecycle viewmodel in easypicker configurations { all { exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel-ktx' } } } dependencies { implementation 'com.github.BasemNasr:EasyMediaPicker:v0.2.0' }class MainActivity : AppCompatActivity(), OnCaptureMedia { private lateinit var easyPicker: EasyPicker var mProfileImagePath = "" . . . override fun onCreate(savedInstanceState: Bundle?) { . setUpImagePicker() btn.setOnClickListener { easyPicker.chooseImage() } } private fun setUpImagePicker() { easyPicker = EasyPicker.Builder(this@MainActivity) .setRequestCode(PICK_PROFILE_IMAGE) .setIconsAndTextColor(R.drawable.camera,R.drawable.gallery,R.color.black) .setSheetBackgroundColor(R.color.white) .setListener(this@MainActivity) .build() } override fun onCaptureMedia(request: Int, files: ArrayList<FileResource>?) { when (request) { PICK_PROFILE_IMAGE -> { // getting file path (file.path) val imagePath = if (files?.get(0)?.path!!.isNotEmpty()) { UploadImages.resizeAndCompressImageBeforeSend( this@MainActivity, files[0].path, File(files[0].path).name ) } else files[0].path mProfileImagePath = imagePath!! Glide.with(this@MainActivity).load(mProfileImagePath) .into(findViewById<AppCompatImageView>(R.id.ivCaptainProfileImg)) } } } } class PickerProfileFragment : Fragment(), OnCaptureMedia { private lateinit var easyPicker: FragmentEasyPicker var mProfileImagePath = "" . . . override fun onCreate(savedInstanceState: Bundle?) { . setUpImagePicker() btn.setOnClickListener { easyPicker.chooseImage() } } private fun setUpImagePicker() { easyPicker = FragmentEasyPicker.Builder(this@PickerProfileFragment) .setRequestCode(MainActivity.PICK_PROFILE_IMAGE) .setListener(this@PickerProfileFragment).build() } override fun onCaptureMedia(request: Int, files: ArrayList<FileResource>?) { when (request) { PICK_PROFILE_IMAGE -> { // getting file path (file.path) files?.let { mProfileImagePath = files[0]?.path ?: "" Glide.with(requireActivity()).load(mProfileImagePath) .into(requireView().findViewById<AppCompatImageView>(R.id.ivCaptainProfileImg)) } } } } } // choose image easyPicker.chooseImage() // choose And Compress Image easyPicker.chooseAndCompressImage() // choose Video From Gallery easyPicker.chooseVideo() //choose file and getting file path easyPicker.chooseFile() //chooseMultipleImages private lateinit var multiImagesEasyPicker: EasyPicker multiImagesEasyPicker = EasyPicker.Builder(this@SecondFragment) .setRequestCode(MainActivity.PICK_IMAGES) .setListener(this@SecondFragment) .setMaxSelectionLimit(5) .build() multiImagesEasyPicker.chooseMultipleImages() Pull requests are the best way to propose changes to the codebase (we use Github Flow). We actively welcome your pull requests:
- Fork the repository and create your branch from
master. - If you've added code that should be tested, add tests.
- If you've changed APIs, update the documentation.
- Ensure the test suite passes.
- Make sure your code lints.
- Issue that pull request!
- Always add a
READMEand/orrequirements.txtto your added code.
Report bugs using Github's issues
We use GitHub issues to track public bugs. Report a bug by opening a new issue it's that easy!
Great Bug Reports tend to have:
- A quick summary and/or background
- Steps to reproduce
- Be specific!
- Give sample code if you can.
- What you expected would happen
- What actually happens
- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)
People love thorough bug reports. I'm not even kidding.






