FLIF is a lossless image format based on MANIAC compression. MANIAC (Meta-Adaptive Near-zero Integer Arithmetic Coding) is a variant of CABAC (context-adaptive binary arithmetic coding), where the contexts are nodes of decision trees which are dynamically learned at encode time.
FLIF outperforms PNG, FFV1, lossless WebP, lossless BPG and lossless JPEG2000 in terms of compression ratio.
Moreover, FLIF supports a form of progressive interlacing (essentially a generalization/improvement of PNG's Adam7) which means that any prefix (e.g. partial download) of a compressed file can be used as a reasonable lossy encoding of the entire image.
For more information on FLIF, visit http://flif.info
FLIF is copylefted free/libre software: you can redistribute it and/or modify it, provided that you share back.
The reference implementation of FLIF is released under the terms of the GNU Lesser General Public License version 3 or later (LGPLv3+).
The decoder library libflif_dec
is released under a weaker, non-copyleft free software license: the Apache 2.0 license.
The example application viewflif
illustrates how to use the decode library.
The example code in viewflif.c
is in the public domain (Creative Commons CC0 1.0 Universal).
On Debian:
- for the encoder/decoder:
sudo apt-get install libpng-dev
- for the viewer:
sudo apt-get install libsdl2-dev
On Fedora:
- for the encoder/decoder:
sudo dnf install libpng-devel
- for the viewer:
sudo dnf install SDL-devel
On Ubuntu:
- for the encoder/decoder:
sudo apt-get install libpng-dev make pkg-config
- for the viewer:
sudo apt-get install libsdl2-dev
- Navigate to the FLIF/src directory and run
make
to compile everything, ormake flif
to build just theflif
command line toolmake libflif.so
to build the LGPL'ed shared librarymake libflif_dec.so
to build the Apache licensed decode-only shared librarymake viewflif
to build the example viewer (it depends on the decode library)
sudo make install
if you want to install it globally
- Install Visual Studio (VS Community 2015 is free for open source projects)
- Open the
build\MSVC
folder and double-click thedl_make_vs.bat
file. This will download required libraries and runnmake
to buildflif.exe
. Then, run in the command line:nmake libflif.dll
to build the shared librarynmake viewflif.exe
to build the example viewer
- Install homebrew
- Install the dependencies:
brew install pkg-config libpng sdl2
- Run
make
in the FLIF/src directory
These will be available on the Release page
- Poly FLIF - A javascript polyfill that allows you to use FLIF files in the browser. (Demo)
- UGUI: FLIF - A GUI that allows you to convert and view FLIF files.
- Ivy, the Taggable Image Viewer – An image viewer that supports FLIF via riff
- flifcrush - A brute-force FLIF optimizer.
- libflif.js – A javascript FLIF encoder and decoder. (Demo)
- flif-rs – A work-in-progress implementation of FLIF in Rust.
- FLIF Windows Codec – A plugin that allows you to decode and encode FLIF files in Windows aplications using the Windows Imaging Component (WIC) API. That allows e.g., to see the files in Windows PhotoViewer and Windows Explorer.
- FLIF Windows Plugin – This plugin enables decoding of FLIF images in applications which use the Windows Imaging Component API. In this way, FLIF images can be viewed in Windows Explorer like other common image formats.
- qt-flif-plugin – Enables Qt4 and Qt5 applications to load images in the FLIF image format.
- FLIFSharp – C# FLIF Library Bindings.
- go-flif – Go FLIF Library Bindings.
- Phew - Image viewer for macOS with QuickLook plugin
- flif-wasm - Node.js-ported FLIF command-line tool.
- node-flif - A Node.JS wrapper that allows you to use JavaScript to interact with the CLI.