Image picker android studio

Image picker android studio

BottomSheet Image Picker for Android

A modern image picker implemented as BottomSheet.

  1. select single/multiple images right in the bottom sheet
  2. use camera to take a picture
  3. choose image from gallery app
  4. handles all permission requests

This library is based on BSImagePicker. I reimplemented everything in Kotlin and added some features. Also, I used the new androidX artifacts.

First make sure jitpack is included as a repository in your project‘s build.gradle:

And then add the below to your app’s build.gradle:

Step 1: Create your own FileProvider

Just follow the guide from Official Android Document. See the demo application file_paths.xml and AndroidManifest.xml.

Step 2: Implement the callback handler

The caller Activity or Fragment has to implement BottomSheetImagePicker.OnImagesSelectedListener to receive the selection callbacks. It will automatically be used by the image picker. No need to register a listener.

You can set a requestTag in the builder. This is useful when you need to show more than one picker on the same page. You will receive this tag as tag parameter in the callback.

Step 3: Create the image picker using the Builder

The setters are all optional and the builder will fallback to default values.

Источник

How to create an image/video picker with preview using the Matisse library for Android with Glide 4

Carlos Delgado

Learn how to use the Matisse library in your new Android project using the Glide Engine 4.

Applications that work a lot with images like Dropbox, WhatsApp, Instagram don’t use normal file pickers for obvious reasons. That’s why there are special pickers that allows the user to see a preview of a collection of images stored on the device. Normally, you wouldn’t implement all this by yourself as there are a lot of things to consider and this may take the precious time of development for your project, so a third party solution is the best way to proceed, and that’s what Matisse will help you to do. Matisse is a well-designed local image and video selector for Android. With this library you can:

  • Use it in Activity or Fragment
  • Select images including JPEG, PNG, GIF, and videos including MPEG, MP4
  • Apply different themes, including two built-in themes and custom themes
  • Different image loaders
  • Define custom filter rules
  • More to find out yourself

In this article, we will show you how to install and use the Matisse library in your Android project with Glide 4.

1. Configure dependencies and library

You will need to include and update all the support libraries of Android to match the compileSdkVersion of your project. In this case, we are using a new Android project with the compileSdkVersion set to 28, so our libraries will use the version 28 of all the android support libraries required by Matisse. Include as well the Glide engine and the Matisse library. We are using the latest version of every library till the date of this article:

Читайте также:  Айфон 6 андроид как включать

Save changes and synchronize the project. After the installation of the libraries we will be able to proceed with the usage of this library in your project. For more information about Matisse, please visit the official repository at Github here or for more information about Glide, visit it’s repository at Github as well.

2. Prepare resources strings

In your app/src/res/values/strings.xml file append the following resource:

Create as well inside the same directory , the dimens.xml file with the following content:

3. Create GifSizeFilter class

During the initialization of the picker we will define an instance of the GifSizeFilter as the filter of images for the picker, this class will define how big the images are and os on, so proceed to create a new class in your app, namely GifSizeFilter.java with the following content:

4. Create Glide 4 Image Engine

The image/video picker uses under the hood the Glide library, a fast and efficient open source media management and image loading framework for Android that wraps media decoding, memory and disk caching, and resource pooling into a simple and easy to use interface. During the initialization of the picker we will define an instance of the Glide 4 engine as the preferred image engine, so proceed to create a new class in your app, namely Glide4Engine.java with the following content:

5. Creating application layout

In this application, our layout will be pretty simple, however it’s based on the constraint layout, so you may change it as you want just adding a button with the id button on the activity_main.xml file. Our layout looks like this:

The main idea is to have a button that will open the image picker when it’s clicked.

6. Basic example

The required logic to make this picker work, is the following one: declare 2 class accesible variables that will contain a random identification code for the activity result, permissions etc and a list variable of Uri’s that will contain the selected files by the user respectively. We have a button, so we will add an onClick listener that will call statically an instance of the Matisse dialog with custom options (you can customize it as you want), for example we will allow to pick all the types of images and set a max ammount of 9 files to select. As mentioned previously, our example will use the Glide 4 Engine, so you will need to define a new instance and provide it as parameter of the imageEngine method of Matisse.

This will open the dialog and the user will be able to select the images in the dialog. Once the user clicks on Ok, it is up to you how to handle the received data on the onActivityResult callback of the main activity. In our case, we will just display the data on the logs:

Читайте также:  Mobile phones having android

Note that the example doesn’t handle permissions, you will need to this by yourself. Check the permissions in the full example.

Full example

You will need to handle the permissions of READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE in your AndroidManifest.xml file:

However that won’t be enough for Android 6+ as you will need to request the permissions on Runtime, the following example describes a fully functional application with a single activity, handles the permissions and applies all the steps mentioned on this article:

Источник

Image picker android studio

📸 Image Picker Library for Android

Easy to use and configurable library to Pick an image from the Gallery or Capture image using Camera. It also allows to Crop and Compresses the Image based on Aspect Ratio, Resolution and Image Size.

Almost 90% of the app that I have developed has an Image upload feature. Along with the image selection, Sometimes I needed a crop feature for profile image for that I’ve used uCrop. Most of the time I need to compress the image as the image captured from the camera is more than 5-10 MBs and sometimes we have a requirement to upload images with specific resolution/size, in that case, image compress is the way to go option. To simplify the image pick/capture option I have created ImagePicker library. I hope it will be useful to all.

  • Pick Gallery Image
  • Pick Image from Google Drive
  • Capture Camera Image
  • Crop Image (Crop image based on provided aspect ratio or let user choose one)
  • Compress Image (Compress image based on provided resolution and size)
  • Retrieve Image Result as Uri object (Retrieve as File object feature is removed in v2.0 to support scope storage)
  • Handle runtime permission for camera
  • Does not require storage permission to pick gallery image or capture new image.
Profile Image Picker Gallery Only Camera Only

If you are yet to Migrate on AndroidX, Use support build artifact:

The ImagePicker configuration is created using the builder pattern.

Kotlin

Java

Override onActivityResult method and handle ImagePicker result.

Inline method (with registerForActivityResult, Only Works with FragmentActivity and AppCompatActivity)

i. Add required dependency for registerForActivityResult API

ii. Declare this method inside fragment or activity class

iii. Create ImagePicker instance and launch intent

Pick image using Gallery

Capture image using Camera

Crop image with fixed Aspect Ratio

Crop square image(e.g for profile)

Compress image size(e.g image should be maximum 1 MB)

Set Resize image resolution

Intercept ImageProvider, Can be used for analytics

Intercept Dialog dismiss event

Specify Directory to store captured, cropped or compressed images. Do not use external public storage directory (i.e. Environment.getExternalStorageDirectory())

Limit MIME types while choosing a gallery image

You can also specify the request code with ImagePicker

Add Following parameters in your colors.xml file, If you want to customize uCrop Activity.

  • Library — Android Kitkat 4.4+ (API 19)
  • Sample — Android Kitkat 4.4+ (API 19)
  • Added uzbekistan translation (Special Thanks to Khudoyshukur Juraev)
  • Removed requestLegacyExternalStorage flag
  • Removed unused string resources
  • Added arabic translation #157 (Special Thanks to zhangzhu95)
  • Added norwegian translation #163 (Special Thanks to TorkelV)
  • Added german translation #192 (Special Thanks to MDXDave)
  • Added method to return Intent for manual launching ImagePicker #182 (Special Thanks to tobiasKaminsky)
  • Added support for android 11 #199
  • Fixed android scope storage issue #29
  • Removed storage permissions #29
  • Fixed calculateInSampleSize leads to overly degraded quality #152 (Special Thanks to FlorianDenis)
  • Fixed camera app not found issue #162
  • Fixed Playstore requestLegacyExternalStorage flag issue #199
  • Added dialog dismiss listener (Special Thanks to kibotu)
  • Added text localization (Special Thanks to yamin8000 and Jose Bravo)
  • Fixed crash issue on missing camera app #69
  • Fixed issue selecting images from download folder #86
  • Fixed exif information lost issue #121
  • Fixed crash issue on large image crop #122
  • Fixed saving image in cache issue #127
  • Added option to limit MIME types while choosing a gallery image (Special Thanks to Marchuck)
  • Introduced ImageProviderInterceptor, Can be used for analytics (Special Thanks to Marchuck)
  • Fixed .crop() opening gallery or camera twice #32
  • Fixed FileProvider of the library clashes with the FileProvider of the app #51 (Special Thanks to OyaCanli)
  • Added option to set Storage Directory #52
  • Fixed NullPointerException in FileUriUtils.getPathFromRemoteUri() #61 (Special Thanks to himphen)
  • Fixed UCropActivity Crash Android 4.4 (KiKat) #82
  • Fixed PNG image saved as JPG after crop issue #94
  • Fixed PNG image saved as JPG after compress issue #105
  • Added Polish text translation #115 (Special Thanks to MarcelKijanka)
  • Failed to find configured root exception #116
  • Improved UI/UX of sample app
  • Removed Bitmap Deprecated Property #33 (Special Thanks to nauhalf)
  • Camera opens twice when «Don’t keep activities» option is ON #41 (Special Thanks to benji101)
  • Fixed uCrop Crash Issue #42
  • Fixed app crash issue, due to Camera Permission in manifest #34
  • Added Option for Dynamic Crop Ratio. Let User choose aspect ratio #36 (Special Thanks to Dor-Sloim)
  • Optimized Uri to File Conversion (Inspired by Flutter ImagePicker)
  • Removed redundant CAMERA permission #26 (Special Thanks to PerrchicK)
  • Sample app made compatible with Android Kitkat 4.4+ (API 19)
  • Fixed Uri to File Conversion issue #8 (Special Thanks to squeeish)
  • Added Support for Inline Activity Result(Special Thanks to soareseneves)
  • Fixed issue #6
  • Optimized Compression Logic
  • Replace white screen with transparent one.

We’ll be really happy if you sent us links to your projects where you use our component. Just send an email to dhavalpatel244@gmail.com And do let us know if you have any questions or suggestion regarding the library.

About

📸 Image Picker for Android, Pick an image from Gallery or Capture a new image with Camera

Источник

Читайте также:  Проговаривание имени звонящего android
Оцените статью