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