Inter-frame Optimization in APNG (original) (raw)

For our sample animation, we'll take 4 input frames, 150x150 each:

clock_input_01.png

clock_input_02.png

clock_input_03.png

clock_input_04.png

150x150

150x150

150x150

150x150

Then we'll use APNG Assembler to create our animation:

apngasm clock_apng.png clock_input_*.png 1 2 -z2 -i1000

clock_apng.png

clock_apng.png

150x150

Now let's see how subframes are stored in APNG, using borders to show their position and size:

clock_apng_part_01.png

clock_apng_part_02.png

clock_apng_part_03.png

clock_apng_part_04.png

150x150

73x58

73x66

89x30

Looking at frame data sizes in IDAT and fdAT chunks, it's clear that storing frame differences instead of full frames leads to significant savings in file size:

clock_tweakpng.png

In conclusion, inter frame optimization is possible with APNG format, and APNG Assembler can automatically calculate and store the difference between frames.