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

Overview

📸 Image Picker Library for Android

Download Releases API Build Status Language Android Arsenal ktlint PRWelcome Open Source Love License Twitter

Built with ❤︎ by Dhaval Patel and contributors

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.

🐱‍🏍Features:

  • 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.

🎬 Preview

Profile Image Picker Gallery Only Camera Only

💻 Usage

  1. Gradle dependency:

    allprojects {
       repositories {
           	maven { url "https://jitpack.io" }
       }
    }
    implementation 'com.github.dhaval2404:imagepicker:2.1'

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

    implementation 'com.github.dhaval2404:imagepicker-support:1.7.1'
  2. The ImagePicker configuration is created using the builder pattern.

    Kotlin

    ImagePicker.with(this)
            .crop()	    			//Crop image(Optional), Check Customization for more option
            .compress(1024)			//Final image size will be less than 1 MB(Optional)
            .maxResultSize(1080, 1080)	//Final image resolution will be less than 1080 x 1080(Optional)
            .start()

    Java

    ImagePicker.with(this)
            .crop()	    			//Crop image(Optional), Check Customization for more option
            .compress(1024)			//Final image size will be less than 1 MB(Optional)
            .maxResultSize(1080, 1080)	//Final image resolution will be less than 1080 x 1080(Optional)
            .start()
  3. Handling results

    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 uri: Uri = data?.data!!
    
             // Use Uri object instead of File to avoid storage permissions
             imgProfile.setImageURI(fileUri)
         } 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()
         }
    }

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

    i. Add required dependency for registerForActivityResult API

    implementation "androidx.activity:activity-ktx:1.2.3"
    implementation "androidx.fragment:fragment-ktx:1.3.3"

    ii. Declare this method inside fragment or activity class

    private val startForProfileImageResult =
        registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
            val resultCode = result.resultCode
            val data = result.data
    
            if (resultCode == Activity.RESULT_OK) {
                //Image Uri will not be null for RESULT_OK
                val fileUri = data?.data!!
    
                mProfileUri = fileUri
                imgProfile.setImageURI(fileUri)
            } 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()
            }
        }

    iii. Create ImagePicker instance and launch intent

    ImagePicker.with(this)
            .compress(1024)         //Final image size will be less than 1 MB(Optional)
            .maxResultSize(1080, 1080)  //Final image resolution will be less than 1080 x 1080(Optional)
            .createIntent { intent ->
                startForProfileImageResult.launch(intent)
            }

🎨 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()	    //Crop image and let user choose aspect ratio.
    	.start()
  • Crop image with fixed Aspect Ratio

    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)
    	.maxResultSize(620, 620)	//Final image resolution will be less than 620 x 620
    	.start()
  • Intercept ImageProvider, Can be used for analytics

    ImagePicker.with(this)
        .setImageProviderInterceptor { imageProvider -> //Intercept ImageProvider
            Log.d("ImagePicker", "Selected ImageProvider: "+imageProvider.name)
        }
        .start()
  • Intercept Dialog dismiss event

    ImagePicker.with(this)
    	.setDismissListener {
    		// Handle dismiss event
    		Log.d("ImagePicker", "onDismiss");
    	}
    	.start()
  • Specify Directory to store captured, cropped or compressed images. Do not use external public storage directory (i.e. Environment.getExternalStorageDirectory())

    ImagePicker.with(this)
       /// Provide directory path to save images, Added example saveDir method. You can choose directory as per your need.
    
       //  Path: /storage/sdcard0/Android/data/package/files
       .saveDir(getExternalFilesDir(null)!!)
       //  Path: /storage/sdcard0/Android/data/package/files/DCIM
       .saveDir(getExternalFilesDir(Environment.DIRECTORY_DCIM)!!)
       //  Path: /storage/sdcard0/Android/data/package/files/Download
       .saveDir(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)!!)
       //  Path: /storage/sdcard0/Android/data/package/files/Pictures
       .saveDir(getExternalFilesDir(Environment.DIRECTORY_PICTURES)!!)
       //  Path: /storage/sdcard0/Android/data/package/files/Pictures/ImagePicker
       .saveDir(File(getExternalFilesDir(Environment.DIRECTORY_PICTURES)!!, "ImagePicker"))
       //  Path: /storage/sdcard0/Android/data/package/files/ImagePicker
       .saveDir(getExternalFilesDir("ImagePicker")!!)
       //  Path: /storage/sdcard0/Android/data/package/cache/ImagePicker
       .saveDir(File(getExternalCacheDir(), "ImagePicker"))
       //  Path: /data/data/package/cache/ImagePicker
       .saveDir(File(getCacheDir(), "ImagePicker"))
       //  Path: /data/data/package/files/ImagePicker
       .saveDir(File(getFilesDir(), "ImagePicker"))
    
      // Below saveDir path will not work, So do not use it
      //  Path: /storage/sdcard0/DCIM
      //  .saveDir(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM))
      //  Path: /storage/sdcard0/Pictures
      //  .saveDir(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES))
      //  Path: /storage/sdcard0/ImagePicker
      //  .saveDir(File(Environment.getExternalStorageDirectory(), "ImagePicker"))
    
        .start()
  • Limit MIME types while choosing a gallery image

    ImagePicker.with(this)
        .galleryMimeTypes(  //Exclude gif images
            mimeTypes = arrayOf(
              "image/png",
              "image/jpg",
              "image/jpeg"
            )
          )
        .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.

    @color/teal_500 @color/teal_700 @color/teal_500 ">
    <resources>
        
        <color name="ucrop_color_toolbar">@color/teal_500color>
        <color name="ucrop_color_statusbar">@color/teal_700color>
        <color name="ucrop_color_widget_active">@color/teal_500color>
    resources>

💥 Compatibility

  • Library - Android Kitkat 4.4+ (API 19)
  • Sample - Android Kitkat 4.4+ (API 19)

✔️ Changelog

Version: 2.1

  • Added uzbekistan translation (Special Thanks to Khudoyshukur Juraev)
  • Removed requestLegacyExternalStorage flag
  • Removed unused string resources

Version: 2.0

  • 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

Version: 1.8

  • 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

Version: 1.7

  • 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

Version: 1.6

  • 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

Version: 1.5

  • 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)

Version: 1.4

Version: 1.3

  • Sample app made compatible with Android Kitkat 4.4+ (API 19)
  • Fixed Uri to File Conversion issue #8 (Special Thanks to squeeish)

Version: 1.2

  • Added Support for Inline Activity Result(Special Thanks to soareseneves)
  • Fixed issue #6

Version: 1.1

  • Optimized Compression Logic
  • Replace white screen with transparent one.

Version: 1.0

  • Initial Build

📃 Libraries Used

Let us know!

We'll be really happy if you sent us links to your projects where you use our component. Just send an email to [email protected] And do let us know if you have any questions or suggestion regarding the library.

License

Copyright 2019-2021, Dhaval Patel

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • Still maintained?

    Still maintained?

    Will this library be update for Android 10 and 11 with the issues? @Dhaval2404 still actively working on this?

    I see we have some important PRs from @GuilhE and @Drjacky for release 2.0.0 and 2.0.1 but they look blocked =(((

    I found this other lib: https://github.com/CanHub/Android-Image-Cropper But I don't wanna spent time changing if this one should be fixed soon =D

    opened by vcuk21 29
  • ucrop url not found

    ucrop url not found

    Codes are fine, no any errors shown but when I click on run button this errors were found on log and stopped running further.

    Summary

    8: Task failed with an exception.

    • What went wrong: Execution failed for task ':app:mergeDebugNativeLibs'.

    Could not resolve all files for configuration ':app:debugRuntimeClasspath'. Could not find com.github.yalantis:ucrop:2.2.6-native. Searched in the following locations: - https://dl.google.com/dl/android/maven2/com/github/yalantis/ucrop/2.2.6-native/ucrop-2.2.6-native.pom - https://repo.maven.apache.org/maven2/com/github/yalantis/ucrop/2.2.6-native/ucrop-2.2.6-native.pom - https://jcenter.bintray.com/com/github/yalantis/ucrop/2.2.6-native/ucrop-2.2.6-native.pom Required by: project :app Could not find com.github.dhaval2404:imagepicker:2.1. Searched in the following locations: - https://dl.google.com/dl/android/maven2/com/github/dhaval2404/imagepicker/2.1/imagepicker-2.1.pom - https://repo.maven.apache.org/maven2/com/github/dhaval2404/imagepicker/2.1/imagepicker-2.1.pom - https://jcenter.bintray.com/com/github/dhaval2404/imagepicker/2.1/imagepicker-2.1.pom Required by: project :app Could not find com.github.yalantis:ucrop:2.2.6-native. Searched in the following locations: - https://dl.google.com/dl/android/maven2/com/github/yalantis/ucrop/2.2.6-native/ucrop-2.2.6-native.pom - https://repo.maven.apache.org/maven2/com/github/yalantis/ucrop/2.2.6-native/ucrop-2.2.6-native.pom - https://jcenter.bintray.com/com/github/yalantis/ucrop/2.2.6-native/ucrop-2.2.6-native.pom Required by: project :app > com.github.dhaval2404:imagepicker-support:1.7.1

    Code to reproduce

    Used in MainActivity on onCreate Method.

    fab.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View view) {
                   ImagePicker.with(MainActivity.this)
                           .createIntent();
               }
           });
    

    If I exclude Companion then it shows error with with() method. (Cannot resolve method)

    Android version

    minSdk 21 targetSdk 31

    Impacted devices

    Installation method

    implementation 'com.github.dhaval2404:imagepicker:2.1' implementation 'com.github.dhaval2404:imagepicker-support:1.7.1'

    SDK version

    compileSdk 31

    Other information

    Gradle 7.0.2

    buildscript {
        repositories {
            google()
            mavenCentral()
            maven { url "https://jitpack.io" }
        }
      dependencies {
            classpath "com.android.tools.build:gradle:7.0.1"
     }
    }
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    

    This is my gradle.build Project file

    waiting for user response 
    opened by vtxmg 18
  • Crash on android 11 on returning result to onActivitity Result

    Crash on android 11 on returning result to onActivitity Result

    there is crash on android 11 on returning result to onActivityResult

    I checked You Library Code it is using External Storage Directory There is restriction in android 11 on that

    opened by faiz786 14
  • Android 10 permission issue

    Android 10 permission issue

    Hi there!

    Thanks for making this great library! I ran into some issues when using the library for Android 10. It's related to the file permission and the changes that have been made to it. The latest version uses scoped permissions for data storage: https://developer.android.com/training/data-storage/files/external-scoped

    I'm not 100% sure if I need to update something on the caller side or if the library needs some changes. I was able to temporarily getting the library working by adding android:requestLegacyExternalStorage="true" to my manifest.

    enhancement 
    opened by jonandersen 14
  • Release 2.0.0

    Release 2.0.0

    Changelog

    Fork 2.0.0

    • CompressionProvider.kt logic refactor
    • Removed fun compress(maxSize: Int): Builder since it was comparing the size of the file and not the image (and the resize operation is enough);
    • Image maxResultSize (resize) algorithm refactor: fun maxResultSize(width: Int, height: Int, keepRatio: Boolean = false): Builde;
    • Replaced AsyncTask with coroutines

    Fork 1.9.1

    • Removed all sstartActivityForResult from library since caller is responsible to provide an ActivityResultLauncher<Intent>
    • Removed https://github.com/florent37/InlineActivityResult dependency

    Fork 1.9.0

    opened by GuilhE 13
  • Performing pause of activity that is not resumed

    Performing pause of activity that is not resumed

    I'm using this library for tablet app. I'm opening the camera by your method and clicking on back button it throwing the exception. and unable to go back. `Performing pause of activity that is not resumed: {com.xxx/com.github.dhaval2404.imagepicker.ImagePickerActivity} java.lang.RuntimeException: Performing pause of activity that is not resumed: {com.xxx/com.github.dhaval2404.imagepicker.ImagePickerActivity}

    opened by dipakksharma 11
  • mime type problem in Android R (11, API 30)

    mime type problem in Android R (11, API 30)

    I got issue in Android R when I tried to set mime type as video and audio. using galleryMimeTypes().

    the below code, works well in Android Q (10, API 29) and below, it is able to show video and audio files only. but it won't work in Android R (11, API 30), it shows photos only, not doesn't show video and audio files.

                ImagePicker.Companion.with(this)
                        .galleryOnly()
                        .galleryMimeTypes(new String[]{"video/*", "audio/*"})
                        .start();
    

    the part of Manifest is below,

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    
    android:requestLegacyExternalStorage="true"
    

    the part of gradle file is below, I didn't add florent37:inline-activity-result-kotlin

    implementation 'com.github.dhaval2404:imagepicker:1.7.5'
    compileSdkVersion 30
    minSdkVersion 24
    targetSdkVersion 30
    buildToolsVersion '30.0.2'
    
    
    opened by jp-eagle 9
  • Having issue in fragment

    Having issue in fragment

    Hi i am using this library in my project and it's working perfect in Activity but in fragment i am facing issue issue onActivityResult not working can you help?

    opened by DkKhan786 9
  • Handle multiple selection

    Handle multiple selection

    Summary

    I need to choose more than one image and the result should be array of Uri to be used in the application

    Android version

    30

    Impacted devices

    all devices

    Installation method

    Gradle

    SDK version

    30

    Other information

    opened by michaelsam94 8
  • Ques: Customize Dialog appearance

    Ques: Customize Dialog appearance

    Hi,

    Thanks for making & maintaining this library.

    Is there any way to change the text appearance of the camera and choose button dialog? I want to apply a custom font to it.

    Also looks like the cancel button color picks up the primary color from my theme is there any way to change it specifically for the dialog?

    button-color-issue

    opened by kdani41 8
  • Camera doesn't show

    Camera doesn't show

    If I want to select image from camera, nothing happens. I tried on two different ways:

    ImagePicker.with(this)
            .crop()
            .start()
    

    Nothing happens if I click on Camera button. And:

    ImagePicker.with(this)
            .crop()
            .cameraOnly()
            .start()
    

    Nothing happens at all. There is also nothing in logs.

    I'm using Google Pixel 3 Android 11 (API 30).

    waiting for user response 
    opened by krajzler 8
  • Unable to start activity ComponentInfo{halal.app.dating/com.github.dhaval2404.imagepicker.ImagePickerActivity}:

    Unable to start activity ComponentInfo{halal.app.dating/com.github.dhaval2404.imagepicker.ImagePickerActivity}:

    Summary

    Fatal Exception: java.lang.RuntimeException Unable to start activity ComponentInfo{halal.app.dating/com.github.dhaval2404.imagepicker.ImagePickerActivity}: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.PICK typ=image/* }

    Code to reproduce

    Android version

    version =11

    Impacted devices

    NOTE

    Installation method

    SDK version

    1.7.1

    Other information

    opened by PayaltheAppIdeas 0
  • Can we add support to be able to pick other file types?

    Can we add support to be able to pick other file types?

    Summary

    Feature request: Can we add support to be able to pick other file types? For example being able to pick files like pdf documents or audio or video files.

    Code to reproduce

    N/A

    Android version

    N/A

    Impacted devices

    N/A

    Installation method

    N/A

    SDK version

    N/A

    Other information

    N/A

    opened by jom16antonio 0
  • ImagePicker

    ImagePicker "import class " is not an option

    Summary

    image image image

    I have followed the tutorial but ImagePicker is not being recognized as a class from this GitHub. What do I do? I am coding in Java, but I don't see how that could effect it.

    opened by Erodri07 1
  • Feature/sdk 33

    Feature/sdk 33

    🚀 Description

    • Update SDK version to 33

    📄 Motivation and Context

    • Keep library up to the latest SDK version
    • Issue https://github.com/Dhaval2404/ImagePicker/issues/308

    🧪 How Has This Been Tested?

    • Tested it on devices running android 13 and older android versions

    📷 Screenshots (if appropriate)

    • No UI is changed

    📦 Types of changes

    • [x] Bug fix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

    ✅ Checklist

    • [x] My code follows the code style of this project.
    • [ ] My change requires a change to the documentation.
    • [ ] I have updated the documentation accordingly.
    opened by asajim 0
  • Image bytes are compressed a lot

    Image bytes are compressed a lot

    I used the below code

    ImagePicker.with(this)
                .galleryOnly()
                .cropSquare()
                .compress(128)
                .maxResultSize(512, 512)
                .saveDir("${}")
                .start()
    

    When I pick a image with 411kb it is getting compressed to 43kb. Need the compressed image to be around 115 to 128 kb, but the image is getting compressed a lot.

    opened by sendhur-muthu 0
Releases(v2.1)
Owner
Dhaval Patel
❤ Android, Kotlin, Java & Flutter 🚀 Opensource enthusiast
Dhaval Patel
Media Picker is an Android Libary that lets you to select multiple images or video

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

Abdullah Alhazmy 264 Nov 10, 2022
An image loading and caching library for Android focused on smooth scrolling

Glide | View Glide's documentation | 简体中文文档 | Report an issue with Glide Glide is a fast and efficient open source media management and image loading

Bump Technologies 33.2k Jan 7, 2023
Android Asynchronous Networking and Image Loading

Android Asynchronous Networking and Image Loading Download Maven Git Features Kotlin coroutine/suspend support Asynchronously download: Images into Im

Koushik Dutta 6.3k Dec 27, 2022
A powerful image downloading and caching library for Android

Picasso A powerful image downloading and caching library for Android For more information please see the website Download Download the latest AAR from

Square 18.4k Jan 6, 2023
Image loading for Android backed by Kotlin Coroutines.

An image loading library for Android backed by Kotlin Coroutines. Coil is: Fast: Coil performs a number of optimizations including memory and disk cac

Coil 8.8k Jan 8, 2023
An Android transformation library providing a variety of image transformations for Glide.

Glide Transformations An Android transformation library providing a variety of image transformations for Glide. Please feel free to use this. Are you

Daichi Furiya 9.7k Dec 30, 2022
An android image compression library.

Compressor Compressor is a lightweight and powerful android image compression library. Compressor will allow you to compress large photos into smaller

Zetra 6.7k Jan 9, 2023
An Android transformation library providing a variety of image transformations for Picasso

Picasso Transformations An Android transformation library providing a variety of image transformations for Picasso. Please feel free to use this. Are

Daichi Furiya 1.7k Jan 5, 2023
Library to handle asynchronous image loading on Android.

WebImageLoader WebImageLoader is a library designed to take to hassle out of handling images on the web. It has the following features: Images are dow

Alexander Blom 102 Dec 22, 2022
Luban(鲁班)—Image compression with efficiency very close to WeChat Moments/可能是最接近微信朋友圈的图片压缩算法

Luban ?? English Documentation Luban(鲁班) —— Android图片压缩工具,仿微信朋友圈压缩策略。 Luban-turbo —— 鲁班项目的turbo版本,查看trubo分支。 写在前面 家境贫寒,工作繁忙。只能不定期更新,还望网友们见谅! 项目描述 目前做A

郑梓斌 13.1k Jan 7, 2023
🍂 Jetpack Compose image loading library which can fetch and display network images using Glide, Coil, and Fresco.

?? Jetpack Compose image loading library which can fetch and display network images using Glide, Coil, and Fresco.

Jaewoong Eum 1.4k Jan 2, 2023
ZoomableComposeImage - A zoomable image for jetpack compose

ZoomableComposeImage - A zoomable image for jetpack compose

RERERE 10 Dec 11, 2022
ComposeImageBlurhash is a Jetpack Compose component with the necessary implementation to display a blurred image

compose-image-blurhash ComposeImageBlurhash is a Jetpack Compose component with the necessary implementation to display a blurred image while the real

Orlando Novas Rodriguez 24 Nov 18, 2022
Easy to use, lightweight custom image view with rounded corners.

RoundedImageView Easy to use, lightweight custom image view with rounded corners. Explore the docs » View Demo · Report Bug · Request Feature About Th

Melik Mehmet Özyildirim 6 Dec 23, 2021
load-the-image Apply to compose-jb(desktop), Used to load network and local pictures.

load-the-image load-the-image Apply to compose-jb(desktop), Used to load network and local pictures. ?? Under construction It may change incompatibly

lt_taozi 13 Dec 29, 2022
Compose Image library for Kotlin Multiplatform.

Compose ImageLoader Compose Image library for Kotlin Multiplatform. Setup Add the dependency in your common module's commonMain sourceSet kotlin {

Seiko 45 Dec 29, 2022
Powerful and flexible library for loading, caching and displaying images on Android.

Universal Image Loader The great ancestor of modern image-loading libraries :) UIL aims to provide a powerful, flexible and highly customizable instru

Sergey Tarasevich 16.8k Jan 8, 2023
An Android library for managing images and the memory they use.

Fresco Fresco is a powerful system for displaying images in Android applications. Fresco takes care of image loading and display, so you don't have to

Facebook 16.9k Jan 8, 2023
Adds touch functionality to Android ImageView.

TouchImageView for Android Capabilities TouchImageView extends ImageView and supports all of ImageView’s functionality. In addition, TouchImageView ad

Michael Ortiz 2.6k Jan 1, 2023