Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


An Android library for managing images and the memory they use.

Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402 (1 ratings)
Rated 5.0 out of 5
Subscribe to updates I use fresco

Statistics on fresco

Number of watchers on Github 14226
Number of open issues 75
Average time to close an issue 4 days
Main language Java
Average time to merge a PR 5 days
Open pull requests 57+
Closed pull requests 138+
Last commit over 1 year ago
Repo Created over 4 years ago
Repo Last Updated over 1 year ago
Size 64.8 MB
Homepage http://frescolib....
Organization / Authorfacebook
Latest Releasev1.8.1
Page Updated
Do you use fresco? Leave a review!
View open issues (75)
View fresco activity
View on github
Fresh, new opensource launches πŸš€πŸš€πŸš€
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating fresco for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)


Build Status

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. It will load images from the network, local storage, or local resources, and display a placeholder until the image has arrived. It has two levels of cache; one in memory and another in internal storage.

In Android 4.x and lower, Fresco puts images in a special region of Android memory. This lets your application run faster - and suffer the dreaded OutOfMemoryError much less often.

Fresco also supports:

  • streaming of progressive JPEGs
  • display of animated GIFs and WebPs
  • extensive customization of image loading and display
  • and much more!

Find out more at our website.


Fresco can be included in any Android application.

Fresco supports Android 2.3 (Gingerbread) and later.

Using Fresco in your application

If you are building with Gradle, simply add the following line to the dependencies section of your build.gradle file:

implementation 'com.facebook.fresco:fresco:1.8.1'

For full details, visit the documentation on our web site, available in English, Chinese, and Korean:

Join the Fresco community

Please use our issues page to let us know of any problems.

For pull requests, please see the CONTRIBUTING file for information on how to help out. See our documentation for information how to build from source.


Fresco is MIT-licensed.

fresco open issues Ask a question     (View All Issues)
  • about 3 years How can I track the ImageRequest downloadTime,decodeTime,totalTimeCost? label:question
  • about 3 years ImageInfo Incorrect for Rotated Images
  • about 3 years UnsatisfiedLinkError for arm64-v8a (split apk)
  • about 3 years .setDownsampleEnabled(true) then resize don't work for webp
  • about 3 years why my onBitmapCacheHit is low?
  • about 3 years getEncodedCountingMemoryCache()
  • about 3 years Animated Gif Pause/Unpause
  • about 3 years SimpleDraweeView always load image fialure
  • about 3 years Why react-native use fresco_0.11.0?
  • about 3 years I have a problem about loading GIF.The url is
  • about 3 years hierarchy.setPlaceholderImage(null) not working since 0.14
  • about 3 years Inspect SimpleDraweeView
  • about 3 years OOM Error even with (relatively) small, resized, and downsampled JPGs in RecyclerView
  • about 3 years Android Studio 2.2.2 After the introduction of the XML version of the 0.10.1 property without prompt
  • about 3 years Really low performance on RecyclerView
  • about 3 years How to judge this is a cache image in onFinalImageSet
  • about 3 years Manually add cache
  • about 3 years How to extend ImageRequest
  • about 3 years Race-condition leads to OutOfBounds in ForwardingControllerListener
  • about 3 years java.lang.OutOfMemoryError: Failed to allocate a 6170268 byte allocation with 1845100 free bytes and 1801KB until OOM
  • about 3 years Huge bitmaps, rounded with bitmap shader are black
  • about 3 years java.lang.ClassCastException: com.facebook.drawee.view.SimpleDraweeView cannot be cast to com.facebook.drawee.view.SimpleDraweeView
  • about 3 years Question: is there a way to remove all other caches if not in a special url list.
  • about 3 years Force rotation for image with EXIF orientation tag
  • about 3 years force Image fill all part of SimpleDraweeView area
  • about 3 years fix TooManyBitmapsException
  • about 3 years Adding fresco lib (0.10+) to gradle breaks onActivityResult
  • about 3 years Strange transcoder error: java.lang.RuntimeException: Bogus Huffman table definition
  • about 3 years GSL MEM ERROR: kgsl_sharedmem_alloc ioctl failed.
  • about 3 years Should support VectorDrawable resource id
fresco open pull requests (View All Pulls)
  • Update
  • Fix for #912 Not able to set hotspot on "overlayImage" drawable set i…
  • add fitx and fity types in scale type
  • Upgrade to OkHttp 3.
  • Fix leaked reference in LocalExifThumbnailProducer.buildEncodedImage()
  • Added SimpleDraweeView.setImageURI(@Nullable String) method
  • Update
  • fix loading local file fail with special character
  • Create WrapContentDraweeView
  • Change to handle external diskcache and adapted cache size limit care - issue 898
  • Fix documentation for UiThreadExecutorService
  • Enhancement the HttpUrlConnectionNetworkFetcher
  • fix DecodeProducer & LocalFetchProducer
  • Changed ArrayList to ArrayDeque so that the runnables are FIFO-ed
  • add attr placeholderImageUri
  • Update
  • CrossFade disabling feature
  • Update gradle plugin version from 1.5.0 to 2.1.0
  • Fix GIF not display with EOF error
  • Fix shared elements transition on Lollipop
  • [Fresco] Always reserve space for a background and an overlay
  • [Fresco] Properly handle requestDisallowInterceptTouchEvent
  • [Fresco] Fix long press in ZoomableDraweeView
  • [Fresco] Add zoomable sample app
  • [Fresco][RFC] Fix rounded path
  • [Fresco][RFC] Add TEMP_BITMAP rounding mode
  • Fix limit on dimensions in ResizeAndRotateProducer (Issue#840)
  • [OPT]optimize LocalFetchProducer & LocalFileFetchProducer
  • [OPT] optimize determineDownsampleRatio for saving used memory
  • [RFC] RetainingDataSourceSupplier
  • Fix GIF not shows static image without animated-gif dependency
  • Switch to Libwebp 0.5.1
  • Reduce Lock contentions in AnimatedDrawableBackends
  • Switch to libwebp 0.5.1
  • Svg
  • Double tap to zoom
  • Add resumable function for animatable gif
  • Configure max bitmap size, roundup fraction by ResizeOptions
  • Add support for setting HTTP headers in ImageRequest
  • [bugfix]closeableObject could be closed unsafely in MultiplexProducer.Multiplexer#onNextResult
  • Update
  • added original dimensions to ImageInfo
  • change OkHttpClient to Call.Factory
  • Fix force rotation
  • Fix creation of synthetic methods
  • Add largeHeap flag support.
  • add xiami music to apps using fresco
  • #1413: Remove incorrect cached data from caches.
  • Fix windows unfriendly test
  • Support ScaleType in DraweeSpanStringBuilder
  • Add a new rounding method using View.setOutlineProvider
  • RFC: Clarify docs on limitations of the BITMAP_ONLY rounding method
  • #1518 declare custom attributes against SimpleDraweeView
  • Extract static-webp-test.
  • Fix for #1676, setRetainImageOnFailure does not work IncreasingQualit…
  • Update to OkHttp 3.10.0.
  • Remove unused catch block.
fresco questions on Stackoverflow (View All Questions)
  • Displaying images from SD Card uing Fresco libray on android
  • SimpleDraweeView not resizing after scaling image in fresco
  • Circular Progressbar using Fresco
  • How to download multiple images using fresco
  • How to use Fresco to read any package's gif image in the assets directory
  • Fresco Android lib: Not able to set hotspot on "overlayImage" drawable set in xml
  • How to use ZoomableDraweeView of Fresco
  • Fresco: How to get original bitmap size?
  • Images not loading in Fresco
  • Quick Share Fresco cached image Via Intent
  • Fresco: Images dissapear after scrolling RecylcerView
  • Fresco animated preloader
  • Fresco-CustomView that extends view can not display image
  • Picasso v/s Imageloader v/s Fresco vs Glide
  • Android: how to rotate image using Fresco
  • Facebook Fresco progressive JPEG
  • DiscCache only first 10 - Fresco
  • why fresco dose not put bitmap in ashmem on android 5.0 or higher
  • How to use Fresco in costume view?
  • Fresco doesn't load images in GridView
  • Scaling down images using Fresco
  • Display whole image with same ratio using fresco library
  • Resizing images using Fresco library in Java
  • fresco Postprocessor:java.lang.RuntimeException: Canvas: trying to use a recycled bitmap
  • Proguard error with fresco
  • When is an Image Cache removed from disk in fresco android?
  • Is it possible to add a bitmap into BitmapMemoryCache manually in Fresco?
  • Fresco: Use current image displayed in Drawee as a placeholder for next request
  • Fresco Library Issues
  • How do I get Fresco to display the full quality image
fresco list of languages used
fresco latest release notes
v1.8.1 Version 1.8.1

Version 1.8.1 is a bug-fix release following the main 1.8.0 release. In particular, it addresses the following issues:

  • Fresco's SoLoader configuration no longer crashes with certain pro-guard configurations (issue: #2039)
  • In previous versions WebP image might fail to load in certain configurations (commit:
v1.8.0 Version 1.8.0

Version 1.8.0 contains several improvements and bug fixes, including:

  • Fixed animated image rendering for dynamic frame dimensions (086fd1df)
  • Fixed downsampling for PNGs (e2c464ef)
  • Fixed WebPs with alpha decoding on API <= 17 devices (705b7745)
  • Supporting wide color gamut decoding on Android 8+ (4a64df00)
  • Fixed handling pin bitmap errors (a08f9e76, f5eb85eb)

Breaking changes

Switched to using SoLoader (aef3790d)

SoLoader has been released for a while now, and updated just last week. We've made the decision to add a hard dependency on it and make SoLoader the one and only native code loader that we use in Fresco. API-wise, this means SoLoaderShim is gone. If you were using some other native loading library (e.g. ReLinker), you can either:

  • keep both and just delete your SoLoaderShim implementation, but this will make your APK size bigger
  • switch to SoLoader for the rest of your app as well and remove the other dependency


Thanks to the following for their pull requests which are included in this release: @Alonexx, @8enet, @zjupure, @bschnack

v1.7.1 Version 1.7.1

This is a bugfix release. For all the relevant changes that made it into this release, please see v1.7.0.

Other projects in Java