A powerful image downloading and caching library for Android

Related tags

Image Loader picasso
Overview

Picasso

A powerful image downloading and caching library for Android

For more information please see the website

Download

Download the latest AAR from Maven Central or grab via Gradle:

implementation 'com.squareup.picasso:picasso:2.71828'

or Maven:

<dependency>
  <groupId>com.squareup.picasso</groupId>
  <artifactId>picasso</artifactId>
  <version>2.71828</version>
</dependency>

Snapshots of the development version are available in Sonatype's snapshots repository.

ProGuard

If you are using ProGuard you might need to add OkHttp's rules: https://github.com/square/okhttp/#r8--proguard

License

Copyright 2013 Square, Inc.

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
  • Out of Memory - Nexus 5 - Android 4.4

    Out of Memory - Nexus 5 - Android 4.4

    I'm seeing a lot of these after moving through a FragmentStatePagerAdapter:

    Could there be a difference? I don't recall this in my Nexus 4 with JB 4.3. (Tho I will investigate). I'm posting this as a reference to see if I'm the only one. I am using code like this:

    Picasso.with(sContext).load(url).placeholder(R.drawable.mix_art_blank).into(mMixImageNormal, mBackgroundImageLoader);
    

    and the "target" (mBackgroundImageLoader) is this:

    private class BackgroundImageLoader implements Callback {
            @Override
            public void onSuccess() {
                update();
            }
            @Override
            public void onError() {
            }
        }
    

    update() does a few things but the ImageView is mMixImageNormal.

    Am I doing something terribly wrong?

    Here's the Stacktrace:

    11-08 20:17:32.284: ERROR/dalvikvm-heap(13607): Out of memory on a 7672336-byte allocation.
    11-08 20:17:32.284: INFO/dalvikvm(13607): "Picasso-/i/000/549/257/Long-Island-Princesses-Chanel-755.jpg" prio=5 tid=41 RUNNABLE
    11-08 20:17:32.284: INFO/dalvikvm(13607): | group="main" sCount=0 dsCount=0 obj=0x44458bb0 self=0x7867c008
    11-08 20:17:32.284: INFO/dalvikvm(13607): | sysTid=14124 nice=10 sched=0/0 cgrp=apps/bg_non_interactive handle=2019896184
    11-08 20:17:32.284: INFO/dalvikvm(13607): | state=R schedstat=( 1644123100 955473493 3952 ) utm=137 stm=27 core=0
    11-08 20:17:32.284: INFO/dalvikvm(13607): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
    11-08 20:17:32.284: INFO/dalvikvm(13607): at android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:601)
    11-08 20:17:32.284: INFO/dalvikvm(13607): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:577)
    11-08 20:17:32.284: INFO/dalvikvm(13607): at com.squareup.picasso.NetworkBitmapHunter.decodeStream(NetworkBitmapHunter.java:93)
    11-08 20:17:32.284: INFO/dalvikvm(13607): at com.squareup.picasso.NetworkBitmapHunter.decode(NetworkBitmapHunter.java:60)
    11-08 20:17:32.284: INFO/dalvikvm(13607): at com.squareup.picasso.BitmapHunter.hunt(BitmapHunter.java:111)
    11-08 20:17:32.284: INFO/dalvikvm(13607): at com.squareup.picasso.BitmapHunter.run(BitmapHunter.java:82)
    11-08 20:17:32.284: INFO/dalvikvm(13607): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
    11-08 20:17:32.284: INFO/dalvikvm(13607): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    11-08 20:17:32.284: INFO/dalvikvm(13607): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
    11-08 20:17:32.284: INFO/dalvikvm(13607): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
    11-08 20:17:32.284: INFO/dalvikvm(13607): at java.lang.Thread.run(Thread.java:841)
    11-08 20:17:32.284: INFO/dalvikvm(13607): at com.squareup.picasso.Utils$PicassoThread.run(Utils.java:218)
    
    opened by Gryzor 108
  • Exception: java.io.IOException: Cannot reset

    Exception: java.io.IOException: Cannot reset

    Hi Square team!

    We are having an issue in an app, when in a listview, images on some rows load but some of them are blank. I tried to trace it and collect as much information as I can.

    Exception

    Picasso:Error:ImageLoadFailed:Uri http://store.indemand.com/shared/ovs/prodimages/movies/t/troublewiththecurve_ID0360906/troublewiththecurveBM_ID0360906.jpg
    
    Picasso:Error:ImageLoadFailed:Exception java.io.IOException: Cannot reset
    
    Picasso:Error:ImageLoadFailed:StackTrace 
    [
        com.squareup.picasso.MarkableInputStream.reset(MarkableInputStream.java:94), 
        com.squareup.picasso.NetworkBitmapHunter.decodeStream(NetworkBitmapHunter.java:91), 
        com.squareup.picasso.NetworkBitmapHunter.decode(NetworkBitmapHunter.java:60), 
        com.squareup.picasso.BitmapHunter.hunt(BitmapHunter.java:111), 
        com.squareup.picasso.BitmapHunter.run(BitmapHunter.java:82), 
        java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390),
        java.util.concurrent.FutureTask.run(FutureTask.java:234), 
        java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080), 
        java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573), 
        java.lang.Thread.run(Thread.java:856), 
        com.squareup.picasso.Utils$PicassoThread.run(Utils.java:218)
    ]
    

    Responsible code (under getView())

    pBuilder.build().load(URL).fit().into(ImageView);
    

    By the way, I don't know if it matters but airplane mode is on, but wifi is connected. I added this because with every row loading, I am seeing this in logs:

    W/Settings(4289): Setting airplane_mode_on has moved from android.provider.Settings.System to android.provider.Settings.Global, returning read-only value.
    

    Also the app crashed with this, after scrolling through the list up and down many times;

    A/Looper(4289): Could not create wake pipe.  errno=24
    A/libc(4289): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 5091 (Picasso-Dispatc)
    A/libc(4289): Unable to open connection to debuggerd: Too many open files
    

    The app doesn't seem to crash and I also didn't see the W/Settings airplane message if I switch to

    Picasso.with(_context).load(URL).fit().into(imageView);
    

    style instead of Picasso.Builder.

    opened by madmed 72
  • won't load camera images

    won't load camera images

    I am trying to use Picasso to load images in an app from the SD card. If I load images that were not taken by the camera they load in fine, but if I try to get images that were taken by the camera they don't load.

    Images over http work too, just not the camera ones.

    I have also tried downloading the image from that URL and putting it on the phones storage, it loads fine that way too, it only seems to be images taken from the phones camera. Tested it on Galaxy S2 and S5 and a Galaxy Ace 3. So it could be a Samsung/Galaxy issue only.

    Calling Code:

        String file = "/storage/extSdCard/DCIM/Camera/20140609_204344.jpg";
    
        picasso
            .load(new File(file)) // this does not work
            //.load("http://upload.wikimedia.org/wikipedia/commons/4/4e/Pleiades_large.jpg")// this works
            .fit()
            .error(R.drawable.logo)
            .into(this.imageView);
    

    Exception that occurs:

    06-09 21:31:47.662: W/System.err(16633):    java.lang.IllegalArgumentException: y + height must be <= bitmap.height()
    06-09 21:31:47.672: W/System.err(16633):    at android.graphics.Bitmap.createBitmap(Bitmap.java:783)
    06-09 21:31:47.672: W/System.err(16633):    at com.squareup.picasso.BitmapHunter.transformResult(BitmapHunter.java:457)
    06-09 21:31:47.672: W/System.err(16633):    at com.squareup.picasso.BitmapHunter.hunt(BitmapHunter.java:154)
    06-09 21:31:47.672: W/System.err(16633):    at com.squareup.picasso.BitmapHunter.run(BitmapHunter.java:101)
    06-09 21:31:47.672: W/System.err(16633):    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
    06-09 21:31:47.672: W/System.err(16633):    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    06-09 21:31:47.672: W/System.err(16633):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
    06-09 21:31:47.672: W/System.err(16633):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
    06-09 21:31:47.672: W/System.err(16633):    at java.lang.Thread.run(Thread.java:841)
    06-09 21:31:47.672: W/System.err(16633):    at com.squareup.picasso.Utils$PicassoThread.run(Utils.java:394)
    
    opened by ram626 54
  • Image won't show (SkImageDecoder::Factory returned null)

    Image won't show (SkImageDecoder::Factory returned null)

    Hi! I'm using Picasso to fetch user's twitter images, but there're some users whose image is not loading, e.g.:

    Picasso.with(getActivity())
    .load("http://pbs.twimg.com/profile_images/2784217159/77e958766fe6a841679167ba02acd677.png")
    .placeholder(R.drawable.twitter_placeholder)
    .resize(216, 216).centerCrop()
    .into((ImageView)view.findViewById(R.id.my_image_view));
    

    I've noticed that logcat prints this:

    D/skia﹕ --- SkImageDecoder::Factory returned null
    

    whenever it happens.

    (I'm testing on a Nexus 4 w/ 4.4.2 (API 19))

    Did anybody have the same problem?

    Thanks!

    opened by iamyellow 44
  • image not loading

    image not loading

    i used the picasso sample app to test this by adding the url to the list in Data.java

    this doesn't load: http://d38eepresuu519.cloudfront.net/af6a65280e49a2ef8c677bd38c88a891/square.jpg

    okhttp-2.0.0-RC1.jar okhttp-urlconnection-2.0.0-RC1.jar okio-1.0.0.jar picasso-2.3.0.jar

    $ curl -I http://d38eepresuu519.cloudfront.net/af6a65280e49a2ef8c677bd38c88a891/square.jpg HTTP/1.1 200 OK Content-Type: image/jpeg Content-Length: 177086 Connection: keep-alive Date: Wed, 04 Jun 2014 18:16:11 GMT Expires: Wed, 03 Jun 2015 01:00:39 GMT Last-Modified: Tue, 03 Jun 2014 01:16:35 GMT ETag: "107bd956286a2c5cd3524f52537fb45a" Accept-Ranges: bytes Server: AmazonS3 Age: 18502 X-Cache: Hit from cloudfront Via: 1.1 a0a19e384553d5e952d3c5003b1438c8.cloudfront.net (CloudFront) X-Amz-Cf-Id: uP9RCEdF4OhIuXCV5_sB8PJRUp83STvg3IEtXJEu695soSLCQLY_Jg==

    opened by jackbelicec 41
  •  I get half photo and half white color, and sometimes I get only the white color.

    I get half photo and half white color, and sometimes I get only the white color.

    I try to load photo in to girdview sometimes a few photos show only half photo and white color for other half, and some the photos show only white color just like the screenshot below.

    15 - 2 15 - 1

    opened by Kuoyhout 40
  • Images no longer displayed after killing/updating the app

    Images no longer displayed after killing/updating the app

    When I install my app on my device, everything works perfectly. But when I update it (like using the "run" button from Android Studio), or just kill it (by swiping it from my "Recent apps"), the images are no longer displayed.

    My code:

    Picasso picasso = Picasso.with(mContext);
    picasso.setLoggingEnabled(true);
    picasso.load(url).into(viewHolder.mainPicture, new Callback() {
        @Override
        public void onSuccess() {
            Log.i(TAG, "PICASSO OK");
        }
    
        @Override
        public void onError() {
            Log.i(TAG, "PICASSO KO");
        }
    });
    

    Logs

    08-27 16:22:41.266      654-654/io.shace.app D/Picasso﹕ Main        created      [R2] Request{http://192.168.0.5:9000/assets/medias/14ce899e-7021-44ef-b44d-bbab5307fa0f.jpg}
    08-27 16:22:41.266      654-746/io.shace.app D/Picasso﹕ Dispatcher  enqueued     [R2]+2ms
    08-27 16:22:41.276      654-762/io.shace.app D/Picasso﹕ Hunter      executing    [R2]+2ms
    08-27 16:22:41.856      654-746/io.shace.app D/Picasso﹕ Dispatcher  retrying     [R2]+586ms
    08-27 16:22:41.856      654-748/io.shace.app D/Picasso﹕ Hunter      executing    [R2]+587ms
    08-27 16:22:42.576      654-746/io.shace.app D/Picasso﹕ Dispatcher  retrying     [R2]+1307ms
    08-27 16:22:42.576      654-749/io.shace.app D/Picasso﹕ Hunter      executing    [R2]+1308ms
    08-27 16:22:42.596      654-746/io.shace.app D/Picasso﹕ Dispatcher  batched      [R2]+1326ms for error
    08-27 16:22:42.796      654-654/io.shace.app I/EventAdapter﹕ PICASSO KO
    08-27 16:22:42.796      654-746/io.shace.app D/Picasso﹕ Dispatcher  delivered    [R2]+1528ms
    08-27 16:22:42.796      654-654/io.shace.app D/Picasso﹕ Main        errored      [R2]+1528ms
    

    Looks like a cache issue to me. The URL is obviously working (locally) since it's working when I uninstall/reinstall the app. The image is not huge (58KB). It's also the only image I'm trying to load so it's probably not a cache size issue.

    The code is inside getView() on a custom Adapter.

    opened by Nivl 40
  • heavy performance issue

    heavy performance issue

    Hello guys!

    I experienced a strange behavior if I try to load a couple 480x320 jpg file into a 100dp x 100dp imageviews (5-6 max on the screen in portrait mode) in a gridview, it is lagging heavily except if it comes from the cache itself. However when i'm trying to load much smaller pictures it is totally smooth. I'm 99% sure that is related to the cache because if i'm using the .skipMemoryCache() function it is much more better! This is happening on all device not just on my n5.

    The library usage is not overly complicated. Picasso.with(mContext).load(mModel.getImageLink()).into(mPreviewImage);

    There are 4 more textviews next to the image in the cell. If'm not loading any images then it is totally okay. The overdraws are minimized everything is green and blue. The latest okhttp 1.5.4 is present. There could be 2000 elements in the adapter. I'm using your awesome library from the beginning and never experienced such a performance drop.

    sample urls: big http://d1bko2jzh7ix12.cloudfront.net/5/c6c469346129c00b9c69b63d092a6f68/gm.jpg small http://d1bko2jzh7ix12.cloudfront.net/5/c6c469346129c00b9c69b63d092a6f68/t.jpg

    Thanks in advance!

    Cheers, Gabor

    opened by gbrbks 39
  • Bitmap from camera not loaded - Moto G Android 5.0.1

    Bitmap from camera not loaded - Moto G Android 5.0.1

    As discussed in issue #539 I am encountering this problem again, since that issue is now closed I am opening a new one to report this bug: Picasso 2.5.2 fails to load images from the local Uri of an image captured via a Camera Intent (the manifest has all the required permission to work with STORAGE and DOCUMENTS). It doesn't throw any exception, the only trace I get of this error is when I attach a Target to the ImageView and it triggers the onBitmapFailed() method. I am using a Moto G on Android 5.0.1. NB: it may be useful to know that I don't get this error using Genymotion's emulator camera.

    Thanks

    opened by leolanzinger 37
  • Declarative Cache Control API

    Declarative Cache Control API

    I've been sitting on this for a while as a future feature but hadn't documented it.

    The API would allow specifying a cache interaction policy both "downward" on the load and "upward" back through the processing. Through this you can facilitate complex cache interactions for both valid and seemingly-questionable use cases.

    Random subset of interactions from other issues:

    • Skip memory cache "downward" only.
    • Skip memory cache "upward" only.
    • Load from local cache (memory or disk) only.
    • Force re-load from network.

    I'm not going to do a full-on API strawman, but I know we'll probably want some EnumSet action with

    public enum BitmapSource { MEMORY, DISK, NETWORK }
    public enum BitmapSink { MEMORY, DISK }
    

    This API will trump the existing weak skipCache() method on RequestCreator.

    opened by JakeWharton 37
  • Images at certain URLs do not load (was: Images that need to be resized up do not display at all)

    Images at certain URLs do not load (was: Images that need to be resized up do not display at all)

    I have two ImageViews; one is 218x192 and the other is 278x192. If I load the same 250x250 image into both of these views with resize([ImageView size]) and centerCrop(), the image is displayed in the first ImageView (which resizes the image down to 218) but not in the second ImageView (which would resize the image up to 278). Only the placeholder is displayed in the second ImageView. I believe this is a regression in 2.0.0 and the upsizing was working previously.

    opened by pushbit 35
  • Picasso not loading cloudfront URLs over wifi connection

    Picasso not loading cloudfront URLs over wifi connection

    Glide and Picasso working fine in my mobile internet connection. But when I connect my mobile with other mobile hotspot it is not working.If you have doubt you can check my URLs:

    https://d1qm53daoujrb6.cloudfront.net/1000x923.jpg https://d1qm53daoujrb6.cloudfront.net/1604x1920.jpg https://d1qm53daoujrb6.cloudfront.net/car3x2.jpg You can test my URLs all are working well and they all are CDN means faster than normal URL.

    Devices I have faced the issue :

    OPPO A15 hotspot: Image is loading after 30 sec. I mean when I open the app initially the connectivity speed is 0.00kb/s-20kb/s after 30 second the connection speed goes upto 5mbps and loads all the iamges. You may say this is because of list of iamges,but no the laoding works well in my mobile data connection. Sample Video POCO F3 hotspot: Same with this the net speed initially stays at 10kbps and after 30 second the speed goes upto 5-6mbps and loads all the iamges. VIVO Y19 hotspot: This works well as I expected. Loads Image instantly. VIVO Y11 hotspot: This works well as I expected. Loads Image instantly. And yes when I connect my laptop with the above hotspots the app works well in android studio emulators.

    But when I load random URLs from google like https://robbreport.com/wp-content/uploads/2022/11/The_25_Fastest_Production_Cars_Lead.jpg?w=1000 this loads well in all the above hotspots. As well as Instagram & Youtube work very well in all the above hotspots. Speed test sample video

    I don't know whether it is URL issue or Glide/Picasso issue or moblie Hotspot. But I'm sure this is not a Internet Service Provider issue. Because the same ISP is present in both working and not working conditon.

    I'm so stressed in this new year, please help.

    opened by AsitDixit 0
  • Bump actions/setup-java from 3.8.0 to 3.9.0

    Bump actions/setup-java from 3.8.0 to 3.9.0

    Bumps actions/setup-java from 3.8.0 to 3.9.0.

    Release notes

    Sourced from actions/setup-java's releases.

    v3.9.0

    In scope of this release we add support for .java-version file (actions/setup-java#426). For more information about its usage please refer to the documentation.

        steps:
          - uses: actions/checkout@v3
          - name: Setup java
            uses: actions/setup-java@v3
            with:
              distribution: '<distribution>'
              java-version-file: .java-version
          - run: java HelloWorldApp.java
    
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Add gif support to network requests

    Add gif support to network requests

    Uses ImageDecoder when available which already handles gifs and falls back to using the android.graphics.Movie API when < 28 with a custom Drawable for rendering.

    https://user-images.githubusercontent.com/672316/204376251-37543b2a-b9d7-499c-ba16-96bfc4853aaf.mov

    opened by gamepro65 0
  • Prevent PicassoExecutorService race condition in DispatcherTest

    Prevent PicassoExecutorService race condition in DispatcherTest

    Been seeing a pattern of flaky DispatcherTests along the lines of

    com.squareup.picasso3.DispatcherTest > performSubmitWithTwoDifferentRequestsQueuesHunters FAILED
        value of: map.size()
        expected: 2
        but was : 1
        map was : {}
            at com.squareup.picasso3.DispatcherTest.performSubmitWithTwoDifferentRequestsQueuesHunters(DispatcherTest.kt:110)
    

    With the debugger I was able to see that PicassoExecutorService is actually spinning up a new thread and executing / completing before our test asserts causing the failure / race condition. Tried swapping PicassoExecutorService out but its required for some tests, so using a spy to prevent creating / executing other threads.

    opened by gamepro65 0
  • Ensure openInputStream cannot kill calling process

    Ensure openInputStream cannot kill calling process

    This addresses issue #2339

    ContentResolver.openInputStream falls back to using a stable content provider which will kill the main process if it fails. Never trust an external process as there may be many things that might cause this such as reinstalls, application updates, etc. Fall back to a FileNotFoundException.

    opened by herriojr 4
  • ContentStreamRequestHandler and Crashing Remote Process

    ContentStreamRequestHandler and Crashing Remote Process

    It appears when using contentResolver.openInputStream(uri), if it is a content:// uri, it will under the hood call ContentResolver.openTypedAssetFileDescriptor. Internal to here, the problem is that if the remote process died while trying to make the call, it falls back to making a call to the stable provider. If the stable provider dies mid call, it will kill the process making the query. The ContentStreamRequestHandler should be rewritten to reimplement the ContentResolver.openInputStream() using only the Unstable ContentProviderClient.

    opened by herriojr 0
Releases(2.8)
  • 2.8(Aug 10, 2020)

  • picasso-parent-2.0.0(Aug 30, 2013)

    • New architecture distances Picasso further from the main thread using a dedicated dispatcher thread to manage requests.
    • Request merging. Two requests on the same key will be combined and the result will be delivered to both at the same time.
    • fetch() requests are now properly wired up to be used as "warm up the cache" type of requests without a target.
    • fit() will now automatically wait for the view to be measured before executing the request.
    • shutdown() API added. Clears the memory cache and stops all threads. Submitting new requests will cause a crash after shutdown() has been called.
    • Batch completed requests to the main thread to reduce main thread re-layout/draw calls.
    • Variable thread count depending on network connectivity. The faster the network the more threads and vice versa.
    • Ability to specify a callback with ImageView requests.
    • Picasso will now decode the bounds of the target bitmap over the network. This helps avoid decoding 2000x2000 images meant for 100x100 views.
    • Support loading asset URIs in the form file:///android_asset/....
    • BETA: Ability to rewrite requests on the fly. This is useful if you want to add custom logic for wiring up requests differently.
    Source code(tar.gz)
    Source code(zip)
  • picasso-parent-1.1.1(Aug 30, 2013)

  • picasso-parent-1.1.0(Aug 30, 2013)

    • load method can now take a Uri.
    • Support loading contact photos given a contact Uri.
    • Add centerInside() image transformation.
    • Fix: Prevent network stream decodes from blocking each other.
    Source code(tar.gz)
    Source code(zip)
  • picasso-parent-1.0.2(Aug 30, 2013)

    • Auto-scale disk cache based on file system size.
    • placeholder now accepts null for clearing an existing image when used in an adapter and without an explicit placeholder image.
    • New global failure listener for reporting load errors to a remote analytics or crash service.
    • Fix: Ensure disk cache folder is created before initialization.
    • Fix: Only use the built-in disk cache on API 14+ (but you're all using [OkHttp][1] anyways, right?).
    Source code(tar.gz)
    Source code(zip)
  • picasso-parent-1.0.1(Aug 30, 2013)

  • picasso-parent-1.0.0(Aug 30, 2013)

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
🍂 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
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
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
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
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
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
Image Picker for Android 🤖

Image Picker for Android ??

Esa Firman 1k Dec 31, 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
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
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
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

Chili Labs 394 Jan 2, 2023
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 ,

AMIT SHEKHAR 573 Dec 31, 2022
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

David Wu 63 Feb 19, 2019