Example #1
0
 /// <summary>
 /// Quantizes an image.
 /// </summary>
 /// <param name="image">Image to quantize.</param>
 /// <param name="settings">Settings for quantization processes.</param>
 /// <returns>Collection of indices and a palette.</returns>
 public static (IEnumerable <int> indeces, IList <Color> palette) Quantize(Bitmap image,
                                                                           QuantizationSettings settings)
 => Quantize(DecomposeImage(image), settings);
Example #2
0
        /// <inheritdoc cref="IIndexEncoding.Quantize(IEnumerable{Color},QuantizationSettings)"/>
        public (IEnumerable <IndexData> indices, IList <Color> palette) Quantize(IEnumerable <Color> colors, QuantizationSettings settings)
        {
            if (settings.ColorModel == ColorModel.RGBA)
            {
                settings.ColorModel = ColorModel.RGB;
            }

            var colorList = colors.ToList();

            var(indices, palette) = Kolors.Quantize(colorList, settings);

            var alphaIndexData = indices.
                                 Zip(colorList, (x, y) => new { index = x, alpha = y.A }).
                                 Select(x => new AlphaIndexData(Convert.ChangeBitDepth(x.alpha, 8, _alphaDepth), x.index));

            return(alphaIndexData, palette);
        }
Example #3
0
        /// <inheritdoc cref="IIndexEncoding.Quantize(IEnumerable{Color},QuantizationSettings)"/>
        public (IEnumerable <IndexData> indices, IList <Color> palette) Quantize(IEnumerable <Color> colors, QuantizationSettings settings)
        {
            var(indices, palette) = Kolors.Quantize(colors, settings);

            return(indices.Select(x => new IndexData(x)), palette);
        }