• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

build/MSVC/H26-Oct-2018-1,4221,254

doc/H03-May-2022-719672

extern/H26-Oct-2018-15,49610,619

raw-tools/H26-Oct-2018-10,5369,784

src/H03-May-2022-15,06411,513

testFiles/H03-May-2022-

tools/H03-May-2022-661510

.gitignoreH A D26-Oct-2018424 5041

.travis.ymlH A D26-Oct-20181.1 KiB3728

CONTRIBUTING.mdH A D26-Oct-20182 KiB2619

LICENSEH A D26-Oct-2018508 96

LICENSE_Apache2H A D26-Oct-201811.1 KiB203169

LICENSE_GPLH A D26-Oct-201834.3 KiB676553

LICENSE_LGPLH A D26-Oct-20187.5 KiB166128

MakefileH A D26-Oct-2018137 128

README.mdH A D26-Oct-20185.4 KiB11173

configure.pyH A D26-Oct-20183.9 KiB12686

README.md

1# FLIF: Free Lossless Image Format
2
3[![Build Status](https://travis-ci.org/FLIF-hub/FLIF.svg?branch=master)](https://travis-ci.org/FLIF-hub/FLIF)
4[![Join the chat at https://gitter.im/jonsneyers/FLIF](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jonsneyers/FLIF?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
5[![Donate via Gratipay](https://img.shields.io/gratipay/flif.svg)](https://gratipay.com/flif/)
6
7FLIF is a lossless image format based on MANIAC compression. MANIAC (Meta-Adaptive Near-zero Integer Arithmetic Coding)
8is a variant of CABAC (context-adaptive binary arithmetic coding), where the contexts are nodes of decision trees
9which are dynamically learned at encode time.
10
11FLIF outperforms PNG, FFV1, lossless WebP, lossless BPG and lossless JPEG2000 in terms of compression ratio.
12
13Moreover, FLIF supports a form of progressive interlacing (essentially a generalization/improvement of PNG's Adam7)
14which means that any prefix (e.g. partial download) of a compressed file can be used as a reasonable lossy encoding of the entire image.
15
16For more information on FLIF, visit https://flif.info
17
18* * *
19
20## License
21
22FLIF is copylefted free/libre software: you can redistribute it and/or modify it, provided that you share back.
23
24The reference implementation of FLIF is released under the terms of the GNU Lesser General Public License version 3 or later (LGPLv3+).
25
26The decoder library `libflif_dec` is released under a weaker, non-copyleft free software license: the Apache 2.0 license.
27
28The example application `viewflif` illustrates how to use the decode library.
29The example code in `viewflif.c` is in the public domain (Creative Commons CC0 1.0 Universal).
30
31* * *
32
33## Build Instructions
34
35### GNU/Linux
36
37#### Install the dependencies
38
39On Debian:
40
41  * for the encoder/decoder: `sudo apt-get install libpng-dev`
42  * for the viewer: `sudo apt-get install libsdl2-dev`
43
44On Fedora:
45
46  * for the encoder/decoder: `sudo dnf install libpng-devel`
47  * for the viewer: `sudo dnf install SDL-devel`
48
49On Ubuntu:
50
51  * for the encoder/decoder: `sudo apt-get install libpng-dev make pkg-config`
52  * for the viewer: `sudo apt-get install libsdl2-dev`
53
54#### Compile
55
56  * Navigate to the FLIF/src directory and run `make` to compile everything, or
57    * `make flif` to build just the `flif` command line tool
58    * `make libflif.so` to build the LGPL'ed shared library
59    * `make libflif_dec.so` to build the Apache licensed decode-only shared library
60    * `make viewflif` to build the example viewer (it depends on the decode library)
61
62#### Install
63
64* `sudo make install` if you want to install it globally
65
66### Windows
67
68* Install Visual Studio
69  ([VS Community 2015](https://www.visualstudio.com/en-us/products/free-developer-offers-vs.aspx)
70  is free for open source projects)
71* Open the `build\MSVC` folder and double-click the `dl_make_vs.bat` file.
72  This will download required libraries and run `nmake` to build `flif.exe`.
73  Then, run in the command line:
74  * `nmake libflif.dll` to build the shared library
75  * `nmake viewflif.exe` to build the example viewer
76
77### OS X
78
79* Install [homebrew](http://brew.sh)
80* Install the dependencies: `brew install pkg-config libpng sdl2`
81* Run `make` in the FLIF/src directory
82
83
84* * *
85
86## Pre-Built Binaries
87
88These will be available on the Release page
89
90* https://github.com/FLIF-hub/FLIF/releases
91
92* * *
93
94## Related Projects
95
96* **[Poly FLIF](https://github.com/UprootLabs/poly-flif)** - A javascript polyfill that allows you to use FLIF files in the browser. ([Demo](https://uprootlabs.github.io/poly-flif))
97* **[UGUI: FLIF](http://flif.info/UGUI_FLIF)** - A GUI that allows you to convert and view FLIF files.
98* **[Ivy, the Taggable Image Viewer](https://github.com/lehitoskin/ivy)** – An image viewer that supports FLIF via [riff](https://github.com/lehitoskin/riff)
99* **[flifcrush](https://github.com/FLIF-hub/flifcrush)** - A brute-force FLIF optimizer.
100* **[libflif.js](https://github.com/saschanaz/libflif.js/)** – A javascript FLIF encoder and decoder. ([Demo](https://saschanaz.github.io/libflif.js/))
101* **[flif.rs](https://github.com/dgriffen/flif.rs)** – A work-in-progress implementation of FLIF in Rust.
102* **[FLIF Windows Codec](https://github.com/peirick/FlifWICCodec)** – 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.
103* **[FLIF Windows Plugin](https://github.com/fherzog2/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.
104* **[qt-flif-plugin](https://github.com/spillerrec/qt-flif-plugin)** – Enables Qt4 and Qt5 applications to load images in the FLIF image format.
105* **[go-flif](https://github.com/chrisfelesoid/go-flif)** – Go FLIF Library Bindings.
106* **[Phew](https://sveinbjorn.org/phew)** - Image viewer for macOS with QuickLook plugin
107* **[flif-wasm](https://github.com/saschanaz/flif-wasm)** - Node.js-ported FLIF command-line tool.
108* **[node-flif](https://github.com/FLIF-hub/node-flif)** - A Node.JS wrapper that allows you to use JavaScript to interact with the CLI.
109* **[SimplEx FLIF](https://github.com/Atrus09/SimplEx-FLIF)** - A simple and extensive GUI intermediary for the native executables.
110* **[WinFLIF](https://github.com/Zaczero/WinFLIF)** - Small Windows desktop app for converting to/from FLIF/PNG stills.
111