a-sixel 0.2.0

A small sixel + palette selection + dithering library.
Documentation

a-sixel

A-Sixel library for encoding sixel images.

Basic Usage

use a_sixel::KMeansSixelEncoder;
use image::RgbImage;

let img = RgbImage::new(100, 100);
println!("{}", <KMeansSixelEncoder>::encode(&img));

Choosing an Encoder

  • I want fast encoding with good quality:
    • Use KMeansSixelEncoder or ADUSixelEncoder.
  • I'm time constrained:
    • Use ADUSixelEncoder, BitSixelEncoder, or OctreeSixelEncoder. You can customize ADU by lowering the STEPS parameter to run faster if necessary while still getting good results.
  • I'm really time constrained and can sacrifice a little quality:
    • Use BitSixelEncoder<NoDither>.
  • I want high quality encoding, and don't mind a bit more computation:
    • Use FocalSixelEncoder.
    • This matters a lot less if you're not crunching the palette down below 256 colors.
    • Note that this an experimental encoder. It will likely produce better comparable or better results than other encoders, but may not always do so. On the test images, for my personal preferences, I think it's slightly better - particularly at small palette sizes. It works by computing weights for each pixel based on saliancy maps and measures of local statistics. These weighted pixels are then fed into a weighted k-means algorithm to produce a palette.

License: MIT OR Apache-2.0