fresco

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

MIT License

Stars
17K
Committers
469

Bot releases are hidden (Show)

fresco - Version 1.8.1

Published by lambdapioneer over 6 years ago

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

fresco - Version 1.8.0

Published by zmroczek almost 7 years ago

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

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

fresco - Version 1.7.1

Published by foghina almost 7 years ago

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

fresco - Version 1.7.0

Published by foghina almost 7 years ago

Do Not Use: this release is broken (see #1991)

Version 1.7.0 contains several improvements and bug fixes, including:

  • Switched to OkHttp 3.8.0 (bd9dd827)
  • Region decoding (bd249fa4)
  • Native circular rounding (705379ee)
  • Added RetainingDataSourceSupplier (ff3bed97)
  • Support inverted rotation orientations (d25944a)

Thanks

Many thanks to the following people who sent pull requests that are included with this release!

  • @adamc01
  • @Anandsoni14
  • @a-d-collins
  • @rvndbalaji
  • @efrohnhoefer
  • @Kazemir
  • @w0yne
  • @eldk
  • @simonzhexu
fresco - Version 1.5.0

Published by erikandre about 7 years ago

Version 1.5.0 contains several improvements and bug fixes, including:

  • Better control of bitmap GPU uploads
  • Add support for fitBottomStart scaleType
  • Support for local content video URI thumbnails
  • Bug fixes

Sample Apps

The following improvements were made to the Fresco Showcase app:

  • Added image resizing example
  • Support loading of SVG files not starting with "<svg" (in the Showcase SVG decoder example)

Breaking changes

  • MediaIdExtractor was removed

Thanks

Thanks to the following for their pull requests which are included in this release: @a-d-collins, @JuniperPhoton, @DkBai, @IguteChung

fresco - Version 1.4.0

Published by kirwan over 7 years ago

Animated Image Changes

Rewritten implementation for animated images (GIFs and animated WebPs) with better performance, particularly when showing multiple GIFs.

This brings improved frame caching and memory management, better control for users of Fresco, new features and some GIF rendering issues have been fixed.

Other Updates in 1.4.0

  • Support for Bitmap.prepareToDraw to upload bitmaps to the GPU ahead of time (as suggested by @
    ChrisCraik) - enabled via ImagePipelineExperiments
  • Fixed Shared Element Transitions. You have to manually call draweeView.setLegacyVisibilityHandlingEnabled(true)
  • Per-image custom drawable factory support
  • Caching improvements
    • You can now set a custom cache trim strategy for the image pipeline
    • Added BaseCacheEventListener that implements CacheEventListener for convenience
  • Easier synchronous requests with DataSources#waitForFinalResult
  • Fixed IncreasingQualityDataSource to keep the low res image if the high res request fails
  • Various other bug fixes and improvements: BitmapCounterProvider, Media Variations, Progressive JPEGs, EXIF parsing, ZoomableDraweeView touch logic, DraweeView attributes in Android Studio

Breaking Changes

AnimatedDrawable

The old animation code has been removed, including AbstractAnimatedDrawable, AnimatedDrawable, or AnimatedDrawableSupport . Change your casts to AnimatedDrawable2.
We also removed com.facebook.fresco:animated-base-support since it is no longer needed.

DrawableFactory

Moved DrawableFactory to com.facebook.imagepipeline.drawable.DrawableFactory. Please change your imports if you're using custom drawable factories.

Small cache threshold

Removed this option from ImagePipelineExperiments as well as related code.

Internal changes

Added void onNewResult(T newResult, @Status int status) to Consumer interface.

Removed deprecated methods

  • ImagePipeline#getDataSourceSupplier(ImageRequest, Object, boolean)
  • EncodedImage#setEncodedCacheKey(CacheKey)
  • EncodedImage#getEncodedCacheKey()
  • GenericDraweeHierarchyBuilder#setActualImageMatrix()
  • GenericDraweeHierarchyBuilder#getActualImageMatrix()

Sample Apps (now with Kotlin!)

We've updated our Showcase sample app to include more samples and merged other sample apps into it.

There is also a new Kotlin sample app that shows how to use Fresco with Kotlin.

fresco - Version 1.3.0

Published by massimocarli over 7 years ago

Version 1.3.0 is mainly a bugfix release.

  • Showcase application improved and new examples added
  • New onUltimateProducerReached() callback method added to ProducerListener.
  • It's now possible to load resources using a qualifying resource URI. This allows for loading resources that are not part of the application's main package.

Breaking Changes

PooledByteBuffer and PooledByteBufferInputStream

These two classes have moved package from com.facebook.imagepipeline.memory to com.facebook.imagepipeline.memory. If you directly make use of either class, simply update your imports.

ProducerListener

The ProducerListener interface has a new callback: onUltimateProducerReached(). This identifies the producer which was ultimately responsible for producing the result which was passed back, so can give an idea about how many requests are satisfied from caches.

If you have an implementation of ProducerListener or RequestListener you will need to add an implementation of this method.

Thanks

Thanks to the following for their pull requests which are included in this release: @voiddog, @nesterov-n, @paour and @josephlam1984.

fresco - Version 1.2.0

Published by erikandre over 7 years ago

Version 1.2.0 is mainly a bugfix release.

  • A MediaIdExtractor interface has been added to benefit from media variations without explicitly adding media IDs to every image request. This is currently experimental though and not recommended unless you're careful and confident in the URLs your app uses.
  • Added option to ImageRequestBuilder for setting a custom image decoder for that particular request.
  • libfb_jpegturbo is now linked as a shared library.
  • Updated to OkHttp v3.6.0.
  • Updated libpng to v1.6.26.

Thanks

Thanks to the following for their pull requests which are included in this release: @paour, @desmond1121, @caojianfeng, @FtheGFW, @eldk, @lucas34, @angarron

fresco - Version 1.1.0

Published by foghina over 7 years ago

Version 1.1.0 is mainly a bugfix release.

There is one breaking change: MemoryUiTrimmable was removed. See d41bf01 for details.

All commits going into this release: https://github.com/facebook/fresco/compare/v1.0.1...v1.1.0

Thanks

Thanks to the following for their pull requests which are included in this release: @lucas34

fresco - Version 1.0.1

Published by oprisnik almost 8 years ago

Version 1.0.1 is mainly a bugfix release:

  • Fixed an issue where URIs with spaces could not be parsed correctly.
  • Updated libwebp to 0.5.2 and fixed some WebP issues.
  • Downsampling ratio calculations are now correct.
  • The image pipeline now uses the correct producer sequence for local files.
  • SimpleDraweeSpanTextView now resizes itself correctly.

New Features

You can use UriUtil.getUriForFile(File) and ImageRequest.fromFile(File) to create URIs and ImageRequests for files.

Thanks

Thanks to the following for their pull requests which are included in this release:
@angarron, @korDen, @sachins, @pizza, @JoelMarcey

fresco - Version 1.0.0 🎉

Published by oprisnik almost 8 years ago

The version bump was overdue - the library is stable for a long time. It is used in all the major Facebook apps for years (Facebook, Messenger, Moments, Facebook Lite). On top of that it also powers a lot of non Facebook apps like Twitter, Wikipedia and Vimeo. We were careful with breaking changes for at least a year - so here we go: Version 1.0!

With this release, Fresco allows you to easily add support for more image formats and custom decoders. This is configurable using the ImageDecoderConfig class. See our sample application for a practical example.

Fresco now allows you to provide it with more semantic information about different versions and URIs of the same image. The concept is called Media Variations and it uses a media id to group different URIs that refer to the same underlying source image that might be loaded in different sizes. Fresco will try to satisfy a new request by first looking if another already cached image with the same media id exists and displaying that. See our sample application for a practical example.

We added a Debug overlay for drawees. They can show you how large the underlying image is with respect to the actually drawn screen area. This is helpful in order to screen you app for images that should be loaded at a smaller resolution. You can activate it using the DraweeConfig parameter of Fresco.initialize(...).

If you are manually dealing with CloseableReferences you might find yourself leaking memory. One can now specify UnclosedReferenceListener in order to log these leaks or crash in debug builds.

DraweeSpan and BetterImageSpan are new Spannable implementations for displaying Drawees within text.

Breaking Change

Fresco now longer has a direct dependency on the Android Support library. Instead, it expects certain part of the support library to be provided by the including application. If you do not include the Android Support Library yourself already, you will have to add the following line to your build.gradle file:

compile "com.android.support:support-core-utils:24.2.1"

With this version we have also removed methods and classes that have been marked as @Deprecated for some time. For all those cases there are new APIs that are easy to use.

Thanks

Thanks to the following for their pull requests which are included in this release: @PiotrWpl, @rigdern, @nesterov-n, @sdqhzhm, @kukuhyoniatmoko, @ghassett, @sailaway

fresco - Version 0.14.1

Published by kirwan about 8 years ago

This is a patch release to fix a bug in ResizeAndRotateProducer which stopped images appearing in some cases.

There is also a new IterativeBoxBlurPostProcessor for performant blurring of images.

Breaking Change

ImageFormat is now a class instead of an enum to allow for future support for custom formats. All default formats can be found in DefaultImageFormats.

fresco - Version 0.14.0

Published by lambdapioneer about 8 years ago

  • PlatformBitmapFactory now supports more createBitmap variations
  • Support for custom Drawable factories
  • New DefaultConfig allows to set global defaults for ImageRequests
  • RotationOptions allow for better control of rotation (either manual or based on EXIF information)
  • We've updated the target, build tools and support library to 24.2.1 which now requires Java 8
  • Improved sample applications
  • And a variety of other fixes and improvements

Breaking Changes

In support library 24.2 Google split the library into smaller parts. By upgrading our support library dependency to 24.2.1, we've been able to specify the parts which Fresco needs (which is very little).

We recommend both upgrading your support library dependencies similarly and making sure you explicitly depend on the parts of the support library that you need. This can reduce your APK size.

Thanks

Thanks to the following for their pull requests which are included in this release: @eldk, @s1rius, @gtpark, @kunny

fresco - Version 0.13.0

Published by massimocarli about 8 years ago

  • Libjpg-turbo upgraded to version 1.5.0
  • Animation Info exposed
  • NineOldAndroid dependency removed from ImagePipeline module
  • Improved sample applications
  • And a variety of other fixes and improvements

Breaking Changes

  • Unused flags removed from ImageDecodeOptions.

Thanks

Thanks to the following for their pull requests which are included in this release: @lambdapioneer, @ahmedre, @joonho and @KoMinkyu.

fresco - Version 0.12.0

Published by lambdapioneer over 8 years ago

  • Fixed ProGuard issues with animated-* and okhttp3 modules
  • Disk cache memory index is now persisted across sessions
  • Removed unnecessary dependencies on nineoldanroids
  • Fixed behavior of zoomables
  • Improved sample applications
  • And a variety of other fixes and improvements

Breaking Changes

  • ImageType has been renamed to CacheChoice

Thanks

Thanks to the following for their pull requests which are included in this release: @huangjunkun, @PiotrWpl, @s1rius and @0mok

fresco - Version 0.11.0

Published by kirwan over 8 years ago

  • Image pipeline
    • Split out ImagePipelineExperiments from ImagePipelineConfig
    • Volley is now integrated as a backend for the image pipeline as an alternative to OkHttp or HttpUrlConnection
    • Resumed requests occur in their original order
    • Fixed a bug where the OkHttp backend could leak non-successful responses
  • Cache
    • Added details of each event to CacheEventListener methods
    • Added caller context as a parameter for CacheKeyFactory methods
    • Added support for synchronous disk cache checks
  • Drawee
    • Added support for the hotspot so ripple drawables work as expected in Lollipop and up.
    • GenericDraweeHierarchy now has setter methods supporting resource IDs
    • Fixed drawee scale type transitions when using activity transitions
    • Added support for dynamically changing backgrounds and overlays
  • Samples
    • Improved gesture handling in the zoomable sample code
    • Added a new sample app to test scroll performance
  • Also
    • Changed Bolts dependency to the smaller Tasks module
    • And a variety of other fixes and improvements

Breaking changes

Experimental config options

To make it clearer which options in ImagePipelineConfig are included for experimental purposes, these have been moved into a separate ImagePipelineExperiments class. Options here should be expected to be volatile and liable to be changed or removed in future releases. Changing these values from their defaults is not recommended in most cases.

These methods are still available in a chain while building your config so if you had the following before:

ImagePipelineConfig config = ImagePipelineConfig.newBuilder(context)
    .setForceSmallCacheThresholdBytes(maxSmallImageBytes)

you can fix it by changing it as follows:

ImagePipelineConfig config = ImagePipelineConfig.newBuilder(context)
    .experiment().setForceSmallCacheThresholdBytes(maxSmallImageBytes)

CacheEventListener

All CacheEventListener methods now receive a new CacheEvent object.

If you have a custom implementation you will need to add the extra parameter to each method. In the case of onEviction() the old parameters have been replaced so you will also need to extract the values from the event if you are making use of them.

CacheKeyFactory

All CacheKeyFactory methods now receive an extra parameter with the caller context object that can be specified when the image is requested.

If you have a custom implementation you will simply need to add the extra parameter to each method.

Multiple drawee backgrounds

It was previously possible to specify multiple backgrounds in a drawee hierarchy. This is still possible but deprecated and if you specify multiple backgrounds these can no longer be rounded.

Thanks

Thanks to the following for their pull requests which are included in this release: @chethann, @droidekas, @sagartrehan, @froxCZ, @nborodikhin, @Ribesg, @dmitrychistyakov, @plamenko, @szpnygo, @s1rius and @Rexee.

fresco - Version 0.10.0

Published by oprisnik over 8 years ago

  • decreased library size by making animated GIF and animated WebP modules optional
  • decreased library size by optimizing native code
  • custom scale type support for Drawee
  • improved and simplified zoomable functionality: added support for tap listeners and inflation from XML
  • OkHttp 3 support
  • added ability to disable disk cache for certain requests (for security purposes)
  • several bug fixes

Breaking change!

If you are using animated images (animated GIFs or animated WebPs) you need to add the following dependencies to your Gradle file:

animated GIF support:
compile 'com.facebook.fresco:animated-gif:0.10.0'

animated WebP support:
compile 'com.facebook.fresco:animated-webp:0.10.0'

if you’re using Gingerbread you also need to add:
compile 'com.facebook.fresco:animated-base-support:0.10.0'

Drawee changes

If you've been using R.styleable.GenericDraweeView, you now have to use R.styleable.GenericDraweeHierarchy instead.

fresco - Version 0.9.0

Published by tyronen almost 9 years ago

  • reduced library size (made webp support for Jelly Bean and below optional)
  • added Stetho plugin
  • upgrade to OkHttp 2.6
  • rounding is applied to all branches of DraweeHierarchy
  • several bug fixes

Breaking change! If you're using webp images below Jelly Bean read this migration guide

fresco - Version 0.8.1

Published by tyronen almost 9 years ago

  • Quick re-release to sort out problems that occurred in v0.8.0 upload
  • A few bug fixes
fresco - Version 0.8.0

Published by tyronen about 9 years ago

  • Allow Bitmap.Config to be set by caller
  • New BaseBooleanSubscriber class
  • New experimental code to put encoded images in ashmem (JellyBean and below)
  • New experimental code to decode WebP directly on older platforms instead of transcoding
  • New sample apps to demonstrate shared transitions and write-you-own uri
  • Added AQuery to comparison app
  • Lotsa bug fixes