An Android transformation library providing a variety of image transformations for Picasso

Last update: May 17, 2022

Picasso Transformations

Android Arsenal License Maven Central

An Android transformation library providing a variety of image transformations for Picasso.

Please feel free to use this.

Are you using Glide or Fresco?

Glide Transformations
Fresco Processors

Demo

Original Image

Transformations

How do I use it?

Step 1

Gradle

repositories {
    mavenCentral()
}

dependencies {
    compile 'jp.wasabeef:picasso-transformations:2.4.0'
    // If you want to use the GPU Filters
    compile 'jp.co.cyberagent.android:gpuimage:2.1.0
}

Step 2

Set Picasso Transform.

Picasso.with(mContext).load(R.drawable.demo)
    .transform(transformation).into((ImageView) findViewById(R.id.image));

Advanced Step 3

You can set a multiple transformations.

Picasso.with(mContext).load(R.drawable.demo)
    .transform(transformation)
    .transform(new CropCircleTransformation())
    .into(holder.image);

Transformations

Crop

CropTransformation, CropCircleTransformation, CropSquareTransformation, RoundedCornersTransformation

Color

ColorFilterTransformation, GrayscaleTransformation

Blur

BlurTransformation

Mask

MaskTransformation

GPU Filter (use GPUImage)

Will require add dependencies for GPUImage.

ToonFilterTransformation, SepiaFilterTransformation, ContrastFilterTransformation InvertFilterTransformation, PixelationFilterTransformation, SketchFilterTransformation SwirlFilterTransformation, BrightnessFilterTransformation, KuwaharaFilterTransformation VignetteFilterTransformation

Applications using Picasso Transformations

Please ping me or send a pull request if you would like to be added here.

Icon Application
Ameba Ownd
QuitNow!

Developed By

Daichi Furiya (Wasabeef) - [email protected]

Follow me on Twitter

Thanks

License

Copyright (C) 2020 Wasabeef

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.

GitHub

https://github.com/wasabeef/picasso-transformations
Comments
  • 1. Enhanced crop

    Added: horizontal gravity crop to aspect ratio crop to width/height as a ratio of original image's width/height crop to exact area (specify left and top) javadoc examples to the bottom of the example app's list

    Reviewed by molexx at 2016-03-21 13:14
  • 2. BlurTransformation not work for me

    already add renderscript in build.gradle:

     defaultConfig {
            applicationId "xxx"
            minSdkVersion 15
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
            renderscriptSupportModeEnabled true
        }
    

    when i build the project:

        Path in archive: lib/armeabi-v7a/libblasV8.so
    Error:duplicate files during packaging of APK /Users/rowandjj/AndroidStudioProjects/PaimaiNews/app/build/outputs/apk/app-debug-unaligned.apk
        Origin 1: /Users/rowandjj/Library/Android/sdk/build-tools/23.0.1/renderscript/lib/packaged/armeabi-v7a/libblasV8.so
        Origin 2: /Users/rowandjj/AndroidStudioProjects/PaimaiNews/app/build/intermediates/exploded-aar/jp.wasabeef/picasso-transformations/1.3.0/jni/armeabi-v7a/libblasV8.so
    

    so i exclude those .so file by packingOptions:

        packagingOptions{
            exclude 'lib/armeabi-v7a/libblasV8.so'
            exclude 'lib/armeabi-v7a/librsjni.so'
            exclude 'lib/armeabi-v7a/libRSSupport.so'
            exclude 'lib/mips/libblasV8.so'
            exclude 'lib/mips/librsjni.so'
            exclude 'lib/mips/libRSSupport.so'
            exclude 'lib/x86/libblasV8.so'
            exclude 'lib/x86/librsjni.so'
            exclude 'lib/x86/libRSSupport.so'
        }
    

    but it not worked either.....

    what should i do?

    Reviewed by Rowandjj at 2015-11-19 08:07
  • 3. unable to add from jcenter in android studio 1.3.2

    Couldn't get this library from jcenter

    Anything I missed here?

    image

    buildscript { repositories {

        mavenCentral()
        jcenter()
    }
    
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
    }
    

    }

    repositories { mavenCentral()

    // for using SNAPSHOT
    //maven {
    //    url uri('https://oss.sonatype.org/content/repositories/snapshots/')
    //}
    

    }

    apply plugin: 'com.android.application'

    dependencies { compile project(':library') // Or, fetch from Maven: // compile 'com.google.maps.android:android-maps-utils:0.3+' compile 'com.android.support:support-v4:22.2.0' compile 'com.android.support:appcompat-v7:22.2.0' compile 'com.google.android.gms:play-services:7.8.0' compile 'com.squareup.picasso:picasso:2.5.2' compile 'org.jsoup:jsoup:1.8.2' compile 'jp.wasabeef:picasso-transformations:1.2.0' // If you want to use the GPU Filters //compile 'jp.co.cyberagent.android.gpuimage:gpuimage-library:1.3.0' compile project(':appiraterAndroid') }

    android { compileSdkVersion 22 buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.teamhj.agriweather"
        minSdkVersion 16
        targetSdkVersion 21
        versionCode 1010
        versionName "1.0.10"
        renderscriptTargetApi 22
        renderscriptSupportModeEnabled true
    }
    buildTypes {
    
        debug {
            debuggable true
        }
    
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            res.srcDirs = ['res']
        }
    }
    
    signingConfigs {
        debug {
            storeFile file('debug.keystore')
        }
    }
    

    }

    task startDemo(type: Exec) { dependsOn 'installDebug' def adb = new File("${System.env.ANDROID_HOME}", "platform-tools${File.separator}adb") commandLine adb, "shell", "am", "start", "-n", "com.google.maps.android.utils.demo/.MainActivity" }

    Reviewed by ksy5662 at 2015-09-18 02:30
  • 4. Cannot compile with proguard

    Since #36 It throws an error compiling:

    Warning:Exception while processing task java.io.IOException: proguard.ParseException: Unknown option 'com.squareup.okhttp' in line 3 of file '/Users/user/.gradle/caches/transforms-1/files-1.1/picasso-transformations-2.2.0.aar/16c5d97f0c603c4db20540986cd71722/proguard.txt'

    In picasso-transformations/transformations/proguard-rules.txt it says: -dontwarn dontwarn com.squareup.okhttp I think it should be: -dontwarn com.squareup.okhttp

    Reviewed by nrodriguez-tupaca at 2018-02-06 20:41
  • 5. Crop not working as expected?

    CropCenter isn't doing what I expect in the example app. The demo.jpg is 640x359 and the CropCenter example crops it to 300x100 center - I would expect the resulting image to just about cover the dogs' heads but it seems to be full width as you can see the red stripe on the far left of the first dog and the wicker basket on the shelf on the right?

    What I expect it to look like: demo_center_crop_300_100

    Screenshot from demo app: image

    Reviewed by molexx at 2016-03-20 02:44
  • 6. CropCircleTransformation creates an extra Bitmap

    I believe it's not necessary to create squaredBitmap. Instead, the BitmapShader can be given a Matrix that has setTranslate(-width, -height). This should accomplish the same thing that creating squaredBitmap does, shifting the viewport on source so that its centre is drawn into bitmap.

    Reviewed by pushbit at 2015-01-20 20:01
  • 7. Build failed with duplicate libraries

    Couldn't build my project with your library included.

    Error:duplicate files during packaging of APK /app/build/outputs/apk/app-debug-unaligned.apk Path in archive: lib/armeabi-v7a/libblasV8.so Origin 1: /app/build/intermediates/exploded-aar/jp.wasabeef/picasso-transformations/1.3.1/jni/armeabi-v7a/libblasV8.so Origin 2: /build-tools/23.0.2/renderscript/lib/packaged/armeabi-v7a/libblasV8.so You can ignore those files in your build.gradle: android { packagingOptions { exclude 'lib/armeabi-v7a/libblasV8.so' } } Error:Execution failed for task ':app:packageDebug'.

    Duplicate files copied in APK lib/armeabi-v7a/libblasV8.so File 1: /app/build/intermediates/exploded-aar/jp.wasabeef/picasso-transformations/1.3.1/jni/armeabi-v7a/libblasV8.so File 2: /build-tools/23.0.2/renderscript/lib/packaged/armeabi-v7a/libblasV8.so

    I tried excluding the lib from packaging options as suggested by the compiler, but it didn't work. That could be a problem on my end. I'll be going with another library in any case. I also tried

    Reviewed by Ethan-Velosys at 2016-01-29 19:15
  • 8. Add gpuimage-library dependency to POM

    It would be nice if the POM included the gpuimage-library dependency, so that it will be downloaded automatically with picasso-transformations and we don't have to add that additional dependency to our projects.

    Reviewed by pushbit at 2015-02-04 18:24
  • 9. Fix un-closed resources in RSBlur

    Some resources in RSBlur were not being closed properly. This was showing up in StrictMode logging. Added destroy() calls to the finally block.

    E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks. java.lang.Throwable: Explicit termination method 'destroy' not called at dalvik.system.CloseGuard.open(CloseGuard.java:180) at android.renderscript.Type.<init>(Type.java:230) at android.renderscript.Type$Builder.create(Type.java:480) at android.renderscript.Allocation.typeFromBitmap(Allocation.java:2777) at android.renderscript.Allocation.createFromBitmap(Allocation.java:2811) at jp.wasabeef.picasso.transformations.internal.RSBlur.blur(RSBlur.java:37) at jp.wasabeef.picasso.transformations.BlurTransformation.transform(BlurTransformation.java:68) at com.squareup.picasso.BitmapHunter.applyCustomTransformations(BitmapHunter.java:429) at com.squareup.picasso.BitmapHunter.hunt(BitmapHunter.java:238) at com.squareup.picasso.BitmapHunter.run(BitmapHunter.java:159) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761) at com.squareup.picasso.Utils$PicassoThread.run(Utils.java:411)

    E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks. java.lang.Throwable: Explicit termination method 'destroy' not called at dalvik.system.CloseGuard.open(CloseGuard.java:180) at android.renderscript.Allocation.<init>(Allocation.java:421) at android.renderscript.Allocation.<init>(Allocation.java:425) at android.renderscript.Allocation.createFromBitmap(Allocation.java:2833) at jp.wasabeef.picasso.transformations.internal.RSBlur.blur(RSBlur.java:37) at jp.wasabeef.picasso.transformations.BlurTransformation.transform(BlurTransformation.java:68) at com.squareup.picasso.BitmapHunter.applyCustomTransformations(BitmapHunter.java:429) at com.squareup.picasso.BitmapHunter.hunt(BitmapHunter.java:238) at com.squareup.picasso.BitmapHunter.run(BitmapHunter.java:159) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761) at com.squareup.picasso.Utils$PicassoThread.run(Utils.java:411)

    E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks. java.lang.Throwable: Explicit termination method 'destroy' not called at dalvik.system.CloseGuard.open(CloseGuard.java:180) at android.renderscript.Allocation.<init>(Allocation.java:421) at android.renderscript.Allocation.<init>(Allocation.java:425) at android.renderscript.Allocation.createTyped(Allocation.java:2676) at android.renderscript.Allocation.createTyped(Allocation.java:2707) at jp.wasabeef.picasso.transformations.internal.RSBlur.blur(RSBlur.java:39) at jp.wasabeef.picasso.transformations.BlurTransformation.transform(BlurTransformation.java:68) at com.squareup.picasso.BitmapHunter.applyCustomTransformations(BitmapHunter.java:429) at com.squareup.picasso.BitmapHunter.hunt(BitmapHunter.java:238) at com.squareup.picasso.BitmapHunter.run(BitmapHunter.java:159) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761) at com.squareup.picasso.Utils$PicassoThread.run(Utils.java:411)

    E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks. java.lang.Throwable: Explicit termination method 'destroy' not called at dalvik.system.CloseGuard.open(CloseGuard.java:180) at android.renderscript.Script.<init>(Script.java:345) at android.renderscript.ScriptIntrinsic.<init>(ScriptIntrinsic.java:29) at android.renderscript.ScriptIntrinsicBlur.<init>(ScriptIntrinsicBlur.java:30) at android.renderscript.ScriptIntrinsicBlur.create(ScriptIntrinsicBlur.java:50) at jp.wasabeef.picasso.transformations.internal.RSBlur.blur(RSBlur.java:40) at jp.wasabeef.picasso.transformations.BlurTransformation.transform(BlurTransformation.java:68) at com.squareup.picasso.BitmapHunter.applyCustomTransformations(BitmapHunter.java:429) at com.squareup.picasso.BitmapHunter.hunt(BitmapHunter.java:238) at com.squareup.picasso.BitmapHunter.run(BitmapHunter.java:159) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761) at com.squareup.picasso.Utils$PicassoThread.run(Utils.java:411)

    Reviewed by mccrajs at 2017-03-08 23:23
  • 10. Need to apply effect on image and send to server

    Hello,

    Thanks for the library , this was what i needed!

    It always go in onPrepareLoad and then onBitmapFailed! and errorDrawable is null.

    Picasso.with(CameraActivity.this).load(filename) .transform(new SwirlFilterTransformation(CameraActivity.this)).into(new Target() { @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { imageView.setImageBitmap(bitmap); bmp = bitmap; }

                    @Override
                    public void onBitmapFailed(Drawable errorDrawable) {
    
                    }
    
                    @Override
                    public void onPrepareLoad(Drawable placeHolderDrawable) {
    
                    }
                });
    
    Reviewed by sana080 at 2016-07-15 04:44
  • 11. CropTransformation(left,top,width,height)

    always set left and top to "(source.getWidth() - mWidth) / 2" and "(source.getHeight() - mHeight) / 2" while it should be the value of left and top pass in parameter ...

    Reviewed by yoann217 at 2016-07-12 10:30
  • 12. Bintray will shutdown May 1st

    Bintray will end service on May 1st. Will you be moving the artifacts to another hosting solution or should we roll our own distributions? https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/

    Reviewed by ToxicBakery at 2021-02-03 19:37
  • 13. how to add Blur Effect using Kotlin

    I am sorry if this is trivial, but I am a beginner. and currently I am using Kotlin. I want to blur my image after downloading using picasso.

    and here is the code I use:

    Picasso.get()
               .load(currentEvent.posterDownloadPath)
               .transform(BlurTransformation(25,3))
               .into(recommendedEventViewHolder.blurryImageView)
    

    but unfortunately I have error like in this image: https://i.stack.imgur.com/Nvq53.png

    so how to properly use BlurTransformation effect ?

    Reviewed by AgungLaksana at 2019-03-10 03:09
  • 14. BlurTransform not working sometimes

    I can't recognize what is going wrong please help. My code :

    `Picasso.with(PlayScreenActivity.this)
                        .load(uri)
                        .transform(new BlurTransformation(this,25,10))
                        .placeholder(R.drawable.ic_default)
                        .error(R.drawable.ic_default)
                        .into(new Target() {
                            @Override
                            public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                            }
    
                            @Override
                            public void onBitmapFailed(Drawable errorDrawable) {
                            }
    
                            @Override
                            public void onPrepareLoad(Drawable placeHolderDrawable) {
                            }
                        });`
    

    See the crashlytic log report

    Fatal Exception: java.lang.RuntimeExceptionTransformation BlurTransformation(radius=25, sampling=10) crashed with exception. 

      | com.a.a.c$3.run (BitmapHunter.java:434)   | android.os.Handler.handleCallback (Handler.java:739)   | com.android.internal.os.ZygoteInit.main (ZygoteInit.java:779)

    Caused by java.lang.IllegalArgumentException width and height must be > 0    | android.graphics.Bitmap.createBitmap (Bitmap.java:866)   | android.graphics.Bitmap.createBitmap (Bitmap.java:812)   | b.a.a.a.a.a (BlurTransformation.java:58)   | com.a.a.c.a (BitmapHunter.java:429)   | com.a.a.c.a (BitmapHunter.java:238)   | com.a.a.c.run (BitmapHunter.java:159)   | java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:422)   | java.lang.Thread.run (Thread.java:818)   | com.a.a.ah$d.run (Utils.java:411)

    Reviewed by Touchunit at 2018-04-02 08:49
  • 15. RuntimeException: Transformation BlurTransformation(radius=15, sampling=5) crashed with exception

    Device: apiLevel - 15 (4.0.4) ZTE - model Grand X In

    Cannot reproduce on my devices, reported from user device on production app.

    Stack trace:

    java.lang.RuntimeException: Transformation BlurTransformation(radius=15, sampling=5) crashed with exception. at com.squareup.picasso.BitmapHunter$3.run(BitmapHunter.java:434) at android.os.Handler.handleCallback(Handler.java:605) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4424) at java.lang.reflect.Method.invokeNative(Method.java:-2) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) at dalvik.system.NativeStart.main(NativeStart.java:-2) Caused by: java.lang.ArrayIndexOutOfBoundsException: length=65536; index=65538 at jp.wasabeef.picasso.transformations.internal.FastBlur.blur(FastBlur.java:125) at jp.wasabeef.picasso.transformations.BlurTransformation.transform(BlurTransformation.java:73) at com.squareup.picasso.BitmapHunter.applyCustomTransformations(BitmapHunter.java:429) at com.squareup.picasso.BitmapHunter.hunt(BitmapHunter.java:238) at com.squareup.picasso.BitmapHunter.run(BitmapHunter.java:159) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) at java.util.concurrent.FutureTask.run(FutureTask.java:137) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) at java.lang.Thread.run(Thread.java:856) at com.squareup.picasso.Utils$PicassoThread.run(Utils.java:411)

    Reviewed by kenumir at 2017-09-28 15:49
An image loading and caching library for Android focused on smooth scrolling
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

May 23, 2022
A powerful image downloading and caching library for Android
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

May 18, 2022
An android image compression library.
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

May 14, 2022
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

Sep 8, 2021
🍂 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.

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

May 17, 2022
Android Asynchronous Networking and Image Loading
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

May 13, 2022
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

May 24, 2022
Image Picker for Android 🤖
Image Picker for Android 🤖

Image Picker for Android ??

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

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

May 12, 2022
ZoomableComposeImage - A zoomable image for jetpack compose

ZoomableComposeImage - A zoomable image for jetpack compose

Apr 17, 2022
ComposeImageBlurhash is a Jetpack Compose component with the necessary implementation to display a blurred image
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

Apr 22, 2022
Easy to use, lightweight custom image view with rounded corners.
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

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

Apr 6, 2022
Powerful and flexible library for loading, caching and displaying images on Android.
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

May 20, 2022
An Android library for managing images and the memory they use.
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

May 15, 2022
Photo picker library for android. Let's you pick photos directly from files, or navigate to camera or gallery.
Photo picker library for android. Let's you pick photos directly from files, or navigate to camera or gallery.

ChiliPhotoPicker Made with ❤️ by Chili Labs. Library made without DataBinding, RxJava and image loading libraries, to give you opportunity to use it w

May 14, 2022
Glide Bitmap Pool is a memory management library for reusing the bitmap memory
Glide Bitmap Pool is a memory management library for reusing the bitmap memory

Glide Bitmap Pool About Glide Bitmap Pool Glide Bitmap Pool is a memory management library for reusing the bitmap memory. As it reuses bitmap memory ,

May 5, 2022
Andorid library that loads images asynchronously into cache using a thread pool
Andorid library that loads images asynchronously into cache using a thread pool

AndroidImageLoader AndroidImageLoader is a fork of the Image Loader component in libs-for-android. The AndroidImageLoader is an Android library that h

Feb 19, 2019
Adds touch functionality to Android ImageView.

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

May 11, 2022