FLAnimatedImage alternatives and similar libraries
Based on the "GIF" category.
Alternatively, view FLAnimatedImage alternatives based on common mentions on social networks and blogs.
-
YLGIFImage
Async GIF image decoder and Image viewer supporting play GIF images. It just use very less memory. -
AnimatedGIFImageSerialization
DISCONTINUED. Complete Animated GIF Support for iOS, with Functions, NSJSONSerialization-style Class, and (Optional) UIImage Swizzling -
JWAnimatedImage
An animated gif & apng engine for iOS in Swift. Have a great performance on memory and cpu usage. -
XAnimatedImage
XAnimatedImage is a performant animated GIF engine for iOS written in Swift based on FLAnimatedImage
InfluxDB - Purpose built for real-time analytics at any scale.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of FLAnimatedImage or a related project?
README
FLAnimatedImage is a performant animated GIF engine for iOS:
- Plays multiple GIFs simultaneously with a playback speed comparable to desktop browsers
- Honors variable frame delays
- Behaves gracefully under memory pressure
- Eliminates delays or blocking during the first playback loop
- Interprets the frame delays of fast GIFs the same way modern browsers do
It's a well-tested component that powers all GIFs in Flipboard. To understand its behavior it comes with an interactive demo:
Who is this for?
- Apps that don't support animated GIFs yet
- Apps that already support animated GIFs but want a higher performance solution
- People who want to tinker with the code (the corresponding blog post is a great place to start; also see the To Do section below)
Installation & Usage
FLAnimatedImage is a well-encapsulated drop-in component. Simply replace your UIImageView
instances with instances of FLAnimatedImageView
to get animated GIF support. There is no central cache or state to manage.
If using CocoaPods, the quickest way to try it out is to type this on the command line:
$ pod try FLAnimatedImage
To add it to your app, copy the two classes FLAnimatedImage.h/.m
and FLAnimatedImageView.h/.m
into your Xcode project or add via CocoaPods by adding this to your Podfile:
pod 'FLAnimatedImage', '~> 1.0'
If using Carthage, add the following line into your Cartfile
github "Flipboard/FLAnimatedImage"
If using Swift Package Manager, add the following to your Package.swift
or add via XCode:
dependencies: [
.package(url: "https://github.com/Flipboard/FLAnimatedImage.git", .upToNextMajor(from: "1.0.16"))
],
targets: [
.target(name: "TestProject", dependencies: ["FLAnimatedImage""])
]
In your code, #import "FLAnimatedImage.h"
, create an image from an animated GIF, and setup the image view to display it:
FLAnimatedImage *image = [FLAnimatedImage animatedImageWithGIFData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://upload.wikimedia.org/wikipedia/commons/2/2c/Rotating_earth_%28large%29.gif"]]];
FLAnimatedImageView *imageView = [[FLAnimatedImageView alloc] init];
imageView.animatedImage = image;
imageView.frame = CGRectMake(0.0, 0.0, 100.0, 100.0);
[self.view addSubview:imageView];
It's flexible to integrate in your custom image loading stack and backwards compatible to iOS 9.
It uses ARC and the Apple frameworks QuartzCore
, ImageIO
, MobileCoreServices
, and CoreGraphics
.
It is capable of fine-grained logging. A block can be set on FLAnimatedImage
that's invoked when logging occurs with various log levels via the +setLogBlock:logLevel:
method. For example:
// Set up FLAnimatedImage logging.
[FLAnimatedImage setLogBlock:^(NSString *logString, FLLogLevel logLevel) {
// Using NSLog
NSLog(@"%@", logString);
// ...or CocoaLumberjackLogger only logging warnings and errors
if (logLevel == FLLogLevelError) {
DDLogError(@"%@", logString);
} else if (logLevel == FLLogLevelWarn) {
DDLogWarn(@"%@", logString);
}
} logLevel:FLLogLevelWarn];
Since FLAnimatedImage is licensed under MIT, it's compatible with the terms of using it for any app on the App Store.
Release process
- Bump version in
FLAnimatedImage.podspec
, update CHANGES, and commit. - Tag commit with
> git tag -a <VERSION> -m "<VERSION>"
and> git push --tags
. - Submit Podspec to Trunk with
> pod trunk push FLAnimatedImage.podspec
(ensure you're auth'ed). ## To Do - Support other animated image formats such as APNG or WebP (WebP support implemented here)
- Integration into network libraries and image caches
- Investigate whether
FLAnimatedImage
should become aUIImage
subclass - Smarter buffering
- Bring demo app to iPhone
This code has successfully shipped to many people as is, but please do come with your questions, issues and pull requests!
Select apps using FLAnimatedImage
(alphabetically)
- Close-up
- Design Shots
- Dropbox
- Dumpert
- Ello
- getGIF
- Gifalicious
- HashPhotos
- LiveBooth
- lWlVl Festival
- Medium
- Slack
- Telegram
- Zip Code Finder
If you're using FLAnimatedImage in your app, please open a PR to add it to this list!
*Note that all licence references and agreements mentioned in the FLAnimatedImage README section above
are relevant to that project's source code only.