Releases: luberda-molinet/FFImageLoading
FFImageLoading 2.1.2
This is a small release focused on performance and stability.
Complete history of changes available here: v2.1.1...v2.1.2
FFImageLoading 2.1.1
This is a small release focused on performance and stability.
Complete history of changes available here: v2.1...v2.1.1
FFImageLoading 2.1
Complete history of changes available here: v2.0.7...v2.1
This release contains a couple of breaking changes.
Breaking changes:
- All obsolete methods have now been removed. New methods have similar names so it is easy to update your code.
- Disk cache implementation moved from journal based to file system only (SimpleDiskCache). This change means that any cached content will have to be redownloaded. The path to cached data also changed, you might want to remove the old data.
Config.MaxCacheSize
has been renamed toConfig.MaxMemoryCacheSize
- ImageService no longer offers static methods, instead of
ImageService.xxx
you should now useImageService.Instance.xxx
. Example:ImageService.LoadUrl()
becomesImageService.Instance.LoadUrl()
- ImageService methods can be called from Xamarin Forms now and the API is much more consistent: same methods from iOS/Android/WP/Xamarin Forms. As such some CachedImage static methods have been removed:
ClearCacheAsync
SetPauseWork
DownloadImageAndAddToDiskCache
- Equivalent methods are now in
ImageService.Instance.xxx
New functionalities
- Preload: when true the image is downloaded & cached. Nothing else happens.
- Prioritization: it is now possible to define which images should be loaded first. Either enum based, with LoadingPriority, or int based.
- Skip caching: memory cache, disk cache or both can be skipped. It allows downloading an image and assigning it directly to a view without caching (thanks @eladmarg !)
- Delay: tasks can now be delayed. For example: it is now possible to start them after 100ms while scrolling.
Other
- FFImageLoading now uses targets rather than specific views, a target receives the bitmap data and uses it, it allows more fine control of the data and how to use it. This is used to implement
Preload
. - MvvmCross bindable ImageView is now part of the standard nuget package. (thanks for your help @xleon !)
- Few scheduler changes
- A couple of extra checks (null, target valid, ...)
- CropTransformation sample update to add pan/pinch gestures (thanks @phazlett !)
- Windows Nuget package has been merged into the others. (thanks @ravensorb !)
FFImageLoading 2.0.7
Complete history of changes available here: v2.0.6...v2.0.7
Optimizations:
- Perform all things on thread pool. Leave UI thread ASAP optimizations
- iOS: Using ImageIO instead of UIImage withImageData for image resizing. More performant, thread safe, works in thread pool and avoids loading original images into memory.
Enhancements:
- Xamarin.Forms nuget now supports Windows UWP
ImageService.Initialize
method refactorings. It now usesConfiguration
class as a parameter. Old override is depreciated.- Android: Support for automatic rotation of images for File image sources basing on file EXIF data.
- InvalidateCache has a new parameter
removeSimilar
, it's used to remove different variations of cache keys from MemoryCache (eg. different downsampling settings, different transformations, etc). - Success callbacks now return
ImageInformation
object which contains some informations about loaded image as:CurrentWidth
,CurrentHeight
,OriginalWidth
,OriginalHeight
,Path
,FilePath
,CacheKey
- Added
DownloadImageAndAddToDiskCacheAsync
which provides a way to download & cache images without assigning to views (for later usage). #143 - Xamarin.Forms: Added InvalidateCache overload with ImageSource type parameter
- Xamarin.Forms: Added ReloadImage method
- Added FadeAnimationForCachedImages and FadeAnimationDuration options
- Transformations which use hex color string now support alpha channel on all platforms
- Updated XF samples to use Xamarin.Forms 2.0, PageFactory 2.0 MVVM framework
Fixes:
- Various memory leaks fixes to avoid
CancellationTokenSource
objects not being disposed / garbage collected. - Xamarin.Forms for Windows: FileImageSource compatibility improvements with Forms
Image
class - Fix #135: always invoke Success callback on main thread
- Xamarin.Forms:
System.MissingMethodException: No constructor found for CachedImageRenderer::.ctor(System.IntPtr, Android.Runtime.JniHandleOwnership)
- #144 heap corruption detected by dlmalloc_real
- Android: Removed some legacy ImageViewAsync code
- Xamarin.Forms Removed some obsolete methods
- Xamarin.Forms: Obsolete methods refactorings after Xamarin.Forms 2.0 update (generic bindable properties)
- Some improvements to FFImageLoading.Cross.MvxImageLoadingView class
FFImageLoading 2.0.6
Complete history of changes available here: v2.0.5...v2.0.6
MORE PERFORMANCE:
- iOS/Android/Windows: UI thread dispatchers performance optimization
- iOS/Android/Windows: Big performance boost thanks to reduced allocations
- iOS: DownloadCache no longer makes a dummy MemoryStream on iOS
- Windows: Large memory usage and performance optimizations (switched from byte arrays to streams)
- Windows: Intensive operations now use locking to avoid excessive memory/cpu usage
- Minor improvements for rotation transformation
Enhancements:
- Windows: Large FFImage control enhancements
- Some minor enhancements
Fixes:
- Fix images not loading from stream that doesn't have cache key
- Windows: Fixed UWP GetForCurrentView must be called on a UI thread
- Windows: Fixed NullException in DiskCache implementation
- Android: Fixed wrong LoadingResult type in UrlStreamResolver
- UWP crash when calling "GetImageAsJpgAsync" #128
- WinRT assets not working in CachedImage
- Some minor fixes
FFImageLoading 2.0.5
Complete history of changes available here: v2.0.4...v2.0.5
- Fixed quite a major Windows Disk Cache bug: #125
- Xamarin.Forms: Added bindable SuccessCommand, ErrorCommand, FinishCommand properties
FFImageLoading 2.0.4
Complete history of changes available here: v2.0.3...v2.0.4
- Fixed some NullReferenceException
- Fixed some issues with caching and loading from streams
- Xamarin.Forms: Added CachedImage.SetPauseWork
- Fixed LoadFromStream bug introduced with 2.0.3
- Android: added some additional bitmap checks
FFImageLoading 2.0.3
Complete history of changes available here: v2.0.2...v2.0.3
- Added Windows/Xamarin.Forms Silverlight support
- Added possibility to specify custom cache keys
- Added
DownSampleInDip
method for iOS/Android/Windows API - it allows to specify downsampling in device independent pixels - MvvmCross: Added MvxImageLoadingView that can be used as a MvxImageView replacement
- iOS - Load images from files based on device scale @3x, @2x or normal
- Windows memory cache optimizations and fixes
- Some additional bug fixes eg: #113 #114 #115 #116
- Some minor improvements
FFImageLoading 2.0.2
Complete history of changes available here v2...v2.0.2
This release mainly contains bug fixes and performance improvements.
Windows 10 & better UWP support
This version brings support for Windows 10 & a better UWP support thanks to @kalarepa
Issues & changes
- A few fixes related to the new bitmap pool & bitmap recycling
- Windows transformations have been improved
- Forms: transformations property is now working in XAML
- iOS supports loading from asset catalogs
- Caching to disk is no longer blocking: images are displayed ASAP, file writes are queued
- Finish callback is now invoked for similar requests
- Invalidating a single cached item was buggy
FFImageLoading 2
Complete history of changes available here: v1.1.7...v2
Better Xamarin.Forms support & Windows Phone
This version brings support for Windows Phone (WinRT, UWP) and drastically improves Xamarin.Forms support.
Samples have also been reworked and demonstrate most features.
Better bitmap cache & pool
Android bitmap cache and bitmap pool has been highly reworked based on https://github.com/rdio/tangoandcache
Benefits: fewer memory allocations, fewer garbage collections, and it fixes an issue where recycled bitmaps were reused. 25c96f7
Issues fixed
- #55, #58, #60, #61, #63, #67, #91
- A couple of potential issues are fixed by checks & locks
- WebP images, on iOS, used to skip transformations b656ede
Transformations
Keep source image format
If the source image does not have transparency then the transformed image will be so too. #84
Remark: some transformations require transparency, ie: CircleTransformation, in this case it is automatically added.
New transformations
A lot of new transformations have been added
- FlipTransformation
- CornersTransformation
- CropTransformation
- RotateTransformation
Other
Better usage of web streams
There is a lock when decoding images to minimize the OutOfMemory exceptions while decoding. Therefore this lock is detrimental for performance with web streams. Hence it has been removed in that case. d2b5cee
DownSample on iOS
Reducing image size is now also working on iOS. This allows reducing memory usage.
Cache control
It is now possible to invalide the memory cache or disk cache.
Load from stream
The image can be loaded from an existing Stream. In this case the image is not cached in memory.
Please note that the Stream is automatically closed.
ImageService.LoadStream(originalStream).Into(_imageView);
Cancellation does not log
Cancelled tasks are no longer logging to the console. This was causing a lot of undesired extra output. #68