censor is a standalone palette analyser inspired by DawnBringer's Palette Analyser for GrafX2 and having a compatible layout.
It helps creating and evaluating restricted palettes by providing visualisations and highlighting certain properties.
Install the rust toolchain using rustup or the repository. Then run:
$ cargo install censor-analyser
To see all the flags and descriptions, pass
--help to censor and its subcommands.
The default output is written into plot.png
in the working directory even if the file exists.
Specify another output file with -o another.png argument.
To use black, grey and white for UI instead of
choosing palette colours, pass the -g flag.
The illuminant is a daylight illuminant
with the white point generated by the temperature T
in Kelvins, 5500 by default;
the option -T may be used to redefine T;
the option -D may be used for the following presets:
-D50, -D55, -D65.
If the input image is png or jpeg and it
has an embedded colour profile, that
profile will be copied into the analysis image.
Specify -j to test the experimental multithreaded
mode.
Analyse a palette from an image input.png:
$ censor analyse -i input.png
Analyse a palette from a text file input.hex:
$ censor analyse -f input.hex
Analyse a palette from manually specified hexcodes 2e3037,ebe5ce:
$ censor analyse -c 2e3037,ebe5ce
Analyse a palette from lospec.com aurora:
$ censor analyse -l aurora
Palette input and illuminant options are the same as for censor analyse.
In addition, there are options for specifying which metrics should be
computed.
-a, --all activates all the metrics.
There are also flags for individual metrics (see the help page).
The output is formatted in csv to be script-friendly.
Start daemon mode on port 8008:
$ censor daemon -p 8008
Once the daemon is running, send commands after connecting to the port (one command per connection). The syntax is the same as for the command-line app, but:
- You should omit the first
censor. - The
daemoncommand is not available. - The
-ooption foranalyseis no longer optional.
An example of a valid palette analysis request (assuming that the daemon is started on port 9876 on a Linux/Mac machine):
$ echo "analyse -l antiquity16 -o plot.png" | nc localhost 9876
On success, OK is returned. On error, ERR is returned and
more error info is printed in the next lines and also into daemon's stderr.
Reduces provided image's palette to the specified one.
Palette input, illuminant, output file options are the same.
The dithering method is determined by the following options:
--nodither results in finding the nearest colour for each pixel;
--bayer N results in ordered dithering with Bayer matrix of size 2^N;
--whitenoise WxH results in ordered dithering with a white noise of size WxH;
--bluenoise WxH results in ordered dithering with a blue noise of size WxH.
By default, blue noise of size 14x14 is applied - that is expected to be frequently
changed.
Other methods will be added.
You are also required to provide a path to the input image. Note that the resulting image will always be in PNG format.
An example of a valid image dithering command:
$ censor dither mona_lisa.jpg -l warmlight --bluenoise 18x18 -o mona_lisa.dithered.png
- Analyse palettes of 2-256 colours
- All widgets use CAM16UCS with perceptual colour distances
- Load colours from command line arguments, text files, images and Lospec
- Daemon mode for large amounts of analysis requests
- Image dithering
- WASM support for analysing palettes on web pages client-side (currently broken)
- Rectangular hue-lightness with fixed chroma
- Spectral colours (with the non-spectral CIExy line added)
- Spectral box (with
yparametrising a parabola going through pure black, the spectral colour and pure white) - Indexed palette
- Close colours (with different lightness weights)
- Internal similarity (which is
(mean_d/min_d)/n^(2/3)) - Acyclic check
- "Spectral" distribution (from hue-mapping nearest spectral colours relative to the white point)
- "Temperature" distribution (normalised
-log(CCT), might be changed later) - Greyscale with differing lightness weights
- Cubes showing the colours in CAM16UCS space from different angles
- Hue-lightness plot
- Useful colour mixes (i.e. producing points that are further from other palette points)
- Lightness-chroma bars
- Lightness-sorted colours and neutralisers
- 12-bit RGB approximation
- Polar hue-chroma plot
- Polar hue-lightness with fixed chroma levels
- Complementaries



