コード例 #1
0
ファイル: Common.cs プロジェクト: ultramario1998/Kuriimu2
        private static void Setup(Bitmap image, QuantizeImageSettings settings)
        {
            // Check arguments
            if (settings.Quantizer.UsesColorCache && settings.ColorCache == null)
            {
                throw new ArgumentNullException(nameof(settings.ColorCache));
            }
            if (settings.Quantizer.AllowParallel && settings.ParallelCount <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(settings.ParallelCount));
            }
            if (settings.Quantizer.UsesVariableColorCount && settings.ColorCount <= 0)
            {
                throw new ArgumentOutOfRangeException(nameof(settings.ColorCount));
            }

            // Prepare objects
            settings.Ditherer?.Prepare(settings.Quantizer, image.Width, image.Height);
            settings.ColorCache?.Prepare(settings.ColorModel);

            if (settings.Quantizer.UsesColorCache)
            {
                settings.Quantizer.SetColorCache(settings.ColorCache);
            }
            if (settings.Quantizer.UsesVariableColorCount)
            {
                settings.Quantizer.SetColorCount(settings.ColorCount);
            }
            if (settings.Quantizer.AllowParallel)
            {
                settings.Quantizer.SetParallelTasks(settings.ParallelCount);
            }
        }
コード例 #2
0
ファイル: Common.cs プロジェクト: ultramario1998/Kuriimu2
        public static (IEnumerable <int> indeces, IList <Color> palette) Quantize(Bitmap image, QuantizeImageSettings settings)
        {
            Setup(image, settings);

            var colors = Decompose(image);

            var indices = settings.Ditherer?.Process(colors) ?? settings.Quantizer.Process(colors);

            return(indices, settings.Quantizer.GetPalette());
        }