예제 #1
0
        private void SaveWeightedColorsToJson(BitmapClusterOperation clusterOperation, string outputDirectory, IColorSpace colorSpace, int clusters)
        {
            List <WeightedColor> colors = clusterOperation.ColorWeights.Zip(clusterOperation.Colors, (w, c) => new WeightedColor(w, c.ToStandardRgbColor())).OrderByDescending(wc => wc.PixelCount).ToList();
            WeightedColorSet     set    = new WeightedColorSet(clusterOperation.PixelWidth, clusterOperation.PixelHeight, colors);

            File.WriteAllText(GetOutputFileName(OriginalFilePath, outputDirectory, colorSpace, clusters, ".json"), JsonConvert.SerializeObject(set));
        }
예제 #2
0
        public MainWindow()
        {
            InitializeComponent();

            rgbOperation    = new BitmapClusterOperation("sRGB", ColorSpaces.Rgb, "_sRGB");
            cieLuvOperation = new BitmapClusterOperation("CIE L*u*v*", ColorSpaces.CieLuv, "_CIELUV");
            cieLabOperation = new BitmapClusterOperation("CIE L*a*b*", ColorSpaces.CieLab, "_CIELAB");

            sRGB.Content   = rgbOperation;
            CIELuv.Content = cieLuvOperation;
            CIELab.Content = cieLabOperation;
        }
예제 #3
0
        public async Task RunAsync(IColorSpace colorSpace, int clusters, string outputDirectory, bool saveColorHistogram)
        {
            IsComplete = false;
            IsRunning  = true;
            var clusterOperation = new BitmapClusterOperation("batch", colorSpace, "_converted");
            await clusterOperation.RunAsync(OriginalImage.ToStandardRgbBitmap(), clusters, Path.GetFileNameWithoutExtension(OriginalFilePath), false);

            outputFileName = GetOutputFileName(OriginalFilePath, outputDirectory, colorSpace, clusters, ".png");
            clusterOperation.Bitmap.Save(outputFileName);

            if (saveColorHistogram)
            {
                string histogramOutputDirectory = Path.Combine(outputDirectory, "colorHistograms");
                Directory.CreateDirectory(histogramOutputDirectory);
                SaveWeightedColorsToJson(clusterOperation, histogramOutputDirectory, colorSpace, clusters);
            }

            ComputedImage = clusterOperation.Bitmap;
            ColorWeights  = clusterOperation.ColorWeights;
            Colors        = clusterOperation.Colors;
            IsRunning     = false;
            IsComplete    = true;
        }