Example #1
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 #2
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);
        }