macOS app which assembles and disassembles animated png files
Swift HTML
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.md

header-logo

Over 6.5k downloads [1] 🎉

APNGb 2.0.1

APNGb is a macOS app which creates animated png from a series of png frames and disassembles animated png into a series of png frames. Assembling has optimization and compression capabilities, option to change frame delay for all or selected frames, playback options. See Assembling feature and Disassembling feature sections for more details. App supports macOS 10.11 and above.

It's built on the top of 2 executables created by Max Stepin: APNG Assembler and APNG Disassembler. Big credits to Max!

What is apng ?

The Animated Portable Network Graphics (APNG) file format is an extension to the Portable Network Graphics (PNG) specification. It allows for animated PNG files that work similarly to animated GIF files, while supporting 24-bit images and 8-bit transparency not available for GIFs. It also retains backward compatibility with non-animated PNG files.

Why apng is better than gif ?

Both GIF and APNG are lossless, but APNG tend to be smaller in size and provides better image quality (color, transparency). APNG is supported by web-browsers like Safari (both macOS and iOS), Firefox (desktop and Android), Chrome (add-ons), Opera (v12 and earlier).

Take a look at below examples:

world-cup-2014-42

APNG = 30 823 bytes

world-cup-2014-42

GIF = 43 132 bytes

Assembling feature

Creates an animated apng/png from a series of png images.

A number of optimization techniques used to make APNG files as small as possible: inter-frame optimization utilizing alpha-blend and dispose operations, smaller than the full-size subframes, dirty transparency, color type and palette optimizations, and various compression options: zlib, 7zip, Zopfli.

Disassembling feature

Breaks an apng/png file into a series of png images.

Decoding is implemented by parsing all chunks in the APNG file, remuxing them into a sequence of static PNG images, as shown in the diagram below, and then using regular (unpatched) libpng to decode them. Then, after processing blend/dispose operations, we finally get a vector of full-size frames in 32 bpp as the result.

Few app screenshots

screen shot 2016-12-28 at 02 09 47 screen shot 2016-12-28 at 02 09 58 screen shot 2016-12-28 at 02 10 03 screen shot 2016-12-28 at 02 10 23 screen shot 2016-12-28 at 02 11 15 screen shot 2016-12-28 at 02 11 48 screen shot 2016-12-28 at 02 11 56

TO DO

  • Add unit tests.
  • Convert GIF to APNG.
  • Optimize apng file.

License

  • MIT License, Copyright (c) 2016 Stefan Godoroja.
  • APNG Assembler and APNG Disassembler are released under zlib/libpng license. More details

Notes

[1] Number of downloads was calculated using sourceforge stats and Github Release States