Introduction
Introduction Statistics Contact Development Disclaimer Help
index.md - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
index.md (4996B)
---
1 FAQ
2 ===
3
4 Why yet another image format?
5 -----------------------------
6 Current image formats have integrated compression, making it complicated…
7 read the image data. One is forced to use complex libraries like libpng,
8 libjpeg, libjpeg-turbo, giflib and others, read the documentation and wr…
9 lot of boilerplate in order to get started.
10
11 Farbfeld leaves this behind and is designed to be as simple as possible,
12 leaving the task of compression to external tools. The simple design, wh…
13 the primary objective, implicitly leads to the very good compression
14 characteristics, as it often happens when you go with the UNIX philosoph…
15 Reading farbfeld images doesn't require any special libraries. The tools…
16 just a toolbox to make it easy to convert between common image formats a…
17 farbfeld.
18
19 How does it work?
20 -----------------
21 In Farbfeld, pattern resolution is not done while converting, but while
22 compressing the image. For example, farbfeld always stores the alpha-cha…
23 even if the image doesn't have alpha-variation. This may sound like a bi…
24 at first, but as soon as you compress an image of this kind, the
25 compression-algorithm (e.g. bz2) recognizes the pattern that every 48 bi…
26 16 bits store the same information. And the compression-algorithms get b…
27 and better at this.
28
29 Same applies to the idea of having 16 bits per channel. It sounds excess…
30 but if you for instance only have a greyscale image, the R, G and B chan…
31 will store the same value, which is recognized by the compression algori…
32 easily.
33
34 This effectively leads to filesizes you'd normally only reach with palet…
35 images, and in some cases bz2 even beats png's compression, for instance…
36 you're dealing with grayscale data, line drawings, decals and even photo…
37
38 Why use 16-Bits-per-channel all the time? Isn't this a total waste?
39 -------------------------------------------------------------------
40 Not when you take compression into account. To make this clearer, assume…
41 paletted image with 5 colors and no transparency. So the data is only a …
42 regular chunks (color1, ..., color5) in a certain order. Compression alg…
43 have been designed to recognize those chunks and can even look at how th…
44 chunks interact.
45
46 Local tests have shown that farbfeld easily beats paletted PNG-images. T…
47 yourself and look at the bzipped results! There is no need for special
48 grayscale, palette, RGB, 1-, 2-, 4-, 8-, 16-Bit subformats. Just use 16-…
49 RGBA all the time and let compression take care of the rest.
50
51 Which compression should I use?
52 -------------------------------
53 bzip2 is recommended, which is widely available (anybody has it) and giv…
54 results. As time will move forward and new algorithms hit the market, th…
55 recommendation might be rethought.
56
57 Is metadata supported?
58 ----------------------
59
60 Almost every image format out there has special offsets or locations
61 where metadata is stored. In itself, there are several different metadata
62 formats (Exif, XMP, etc.). For farbfeld, to keep it simple, there are
63 no provisions within the file format for metadata. Instead, one can
64 use so-called sidecar files (also known as buddy files or connected
65 files). As an example, to provide metadata for an image.ff.bz2, one can
66 add a file called image.xmp that contains XMP metadata for said image.
67
68 An added advantage of this approach is that the metadata is independent
69 of the image compression. As argued above, compression is vital for
70 farbfeld to be used efficiently, but when thinking of an application
71 that lists farbfeld-images in a folder, it might want to access
72 metadata as fast as possible.
73
74 The use of multiple files for one entity is a downside, but it wouldn't
75 be a problem at all if modern file systems supported forks.
76
77 What about NetPBM?
78 ------------------
79 NetPBM is considered to be the most simple format around, however, there…
80 room for improvement. In fact, it doesn't help that the format is subdiv…
81 into Portable BitMaps, Portable GrayMaps and Portable PixMaps. It's not …
82 when a manpage can't give a simple overview of a format in a few sentenc…
83
84 NetPBM's big vice is that it has originally been developed to be hand-wr…
85 and passed around as plain text. A binary format exists, but still handl…
86 optional comments in the header, base 10 ASCII width and height values,
87 arbitrary whitespace inside the data and out-of-band image size and colo…
88 is too painful for the sane user.
89
90 Judging from the usage of the format considering how long it's been arou…
91 it's no surprise it never really took off. Additionally, functionality l…
92 alpha channels and 16-Bit color depth can only be achieved via extension…
93 to it being a textual format it also lacks the desired compression
94 characteristics.
95
96 The question you have to ask yourself is: Can I read in a format without
97 consulting the manpages? If your answer is yes, then the format is simple
98 enough. In this regard, NetPBM can be considered to be a failed format.
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.