/// <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);
/// <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); }
/// <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); }