Image Picker Library for Android
Simple Library to Pick an image from the Gallery or Capture image with Camera.
Almost 90% of the app that I have developed has Image upload feature. To simplify the image pick/capture option I have created this library. Its easily configurable and easy to use.
?Usage
-
Include the library as local library project.
allprojects { repositories { jcenter() } }
implementation 'com.github.dhaval2404:imagepicker:1.0'
-
The ImagePicker configuration is created using the builder pattern.
ImagePicker.with(this) .crop(1f, 1f) //Crop Square image(Optional) .compress(1024) //Final image size will be less than 1 MB(Optional) .maxResultSize(620, 620) //Final image resolution will be less than 620 x 620(Optional) .start()
-
Override
onActivityResult
method and handle ImagePicker result.override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (resultCode == Activity.RESULT_OK) { //Image Uri will not be null for RESULT_OK val fileUri = data?.data imgProfile.setImageURI(fileUri) //You can get File object from intent val file:File = ImagePicker.getFile(data) //You can also get File Path from intent val filePath:String = ImagePicker.getFilePath(data) } else if (resultCode == ImagePicker.RESULT_ERROR) { Toast.makeText(this, ImagePicker.getError(data), Toast.LENGTH_SHORT).show() } else { Toast.makeText(this, "Task Cancelled", Toast.LENGTH_SHORT).show() } }
?Customization
-
Pick image using Gallery
ImagePicker.with(this) .galleryOnly() //User can only select image from Gallery .start() //Default Request Code is ImagePicker.REQUEST_CODE
-
Capture image using Camera
ImagePicker.with(this) .cameraOnly() //User can only capture image using Camera .start()
-
Crop image
ImagePicker.with(this) .crop(16f, 9f) //Crop image with 16:9 aspect ratio .start()
-
Crop square image(e.g for profile)
ImagePicker.with(this) .cropSquare() //Crop square image, its same as crop(1f, 1f) .start()
-
Compress image size(e.g image should be maximum 1 MB)
ImagePicker.with(this) .compress(1024) //Final image size will be less than 1 MB .start()
-
Set Resize image resolution
ImagePicker.with(this) //Final image resolution will be less than 620 x 620 .maxResultSize(620, 620) .start()
-
You can also specify the request code with ImagePicker
ImagePicker.with(this) .maxResultSize(620, 620) .start(101) //Here 101 is request code, you may use this in onActivityResult
-
Add Following parameters in your colors.xml file, If you want to customize uCrop Activity.
<resources> <!-- Here you can add color of your choice --> <color name="ucrop_color_toolbar">@color/teal_500</color> <color name="ucrop_color_statusbar">@color/teal_700</color> <color name="ucrop_color_widget_active">@color/teal_500</color> </resources>
-
You don't need to add any permissions to manifest, everything is merged automatically from library's manifest file. You can remove unnecessary permission by adding tools:node="remove tag.
<!-- If Not using Camera feature, Add following line in app manifest. This will remove permission while manifest merge --> <uses-permission android:name="android.permission.CAMERA" tools:node="remove"/>
?Compatibility
- Library - Android Kitkat 4.4+ (API 19)
- Sample - Android Lollipop 5.0+ (API 21)