GIF App Development – Challenges & Tips
The decoding process contains multiple aforementioned steps. But there are more factors to consider. Initially, we require some kind of a ticker or clock that is responsible for advancing the time means that switching to subsequent frames.
Such a ticker needs to be aware of the UI lifecycle. Especially it
needs to be disposed of when UI is no longer alive for instance user pressed
the back button or simply navigate to another app development. Handling the Android UI
lifecycle properly is a significant challenge for flutter developers to
build it. In Android app development, a lot
of bugs and crashes are caused by leaks which are effects of improper lifecycle
handling. Especially the Movie class used recently for GIF decoding also used
to leak. After 60 days another one was exposed.
Encoding vs decoding
GIF encoding process is much more complicated than decoding. There
are two main reasons. Image data in the GIF file is separated into multiple
frames. But, they are not always the same as physical film frames. Let’s take a
look at the below animation:
1. The most effective way of encoding is to store only differences
of subsequent frames:
2. Of course, nothing prohibits from saving the full-sized second software developers frame like this:
3. However, doing so will cause the complete GIF file size will be
much.
Note, that GIF files used in real-time usually contain dozens of
frames, larger than one in this simple example. Extracting differences between
subsequent frames is not a small problem. The computer and mobile app development displays, image formats GIF,
JPG, PNG, etc, use 24-bit color depth. That means about 16 million colors.
Even a single GIF frame may only consist of up to 256 different
colors. As you can remember from the previous paragraphs. So, let’s look to
pack 16 million possibilities into 256 places. Well, it is pretty hard to do
that effectively, but many techniques have been created, they are collectively
called dithering. Encoding is a complicated app development process, and it needs to work
on Android devices with reasonable performance.
Comments
Post a Comment