public Statistics Encode(string inputFilePath, string outputFilePath, HuffmanEncodeModel huffmanEncodeModel) { Statistics statiscs; IHuffmanCoderInterface huffmanCoderInterface; IStatisticsBuilder statisticsBuilder = new StatisticsBuilder(); using (IInputReader input = new InputReader(inputFilePath)) { ICoderOutputWriter output = new CoderOutputWriter(new ByteCreator(), new HeaderCreator()); if (huffmanEncodeModel == HuffmanEncodeModel.Standard) { huffmanCoderInterface = new StandardHuffmanCoderInterface(input, output); } else if (huffmanEncodeModel == HuffmanEncodeModel.Block) { huffmanCoderInterface = new PairHuffmanCoderInterface(input, output); } else { huffmanCoderInterface = new MarkowHuffmanCoderInterface(input, output); } huffmanCoderInterface.Encode(); System.IO.File.WriteAllBytes(outputFilePath, output.FileBytes); statiscs = statisticsBuilder.BuildStatistics(output.SymbolMap, output.Header, input.Size, output.Size); if (huffmanEncodeModel == HuffmanEncodeModel.Standard) { IHistogramBuilder histogramBuilder = new HistogramBuilder(); histogramBuilder.BuildHistogram(output.SymbolMap, outputFilePath); } } return(statiscs); }
public async void BuildHistograms() { HistogramBuilder.UseROI = this.LimitHistograms && SelectedROI != null; HistogramBuilder.ROI = this.SelectedROI; var histograms = await HistogramBuilder.FromGrids(SelectedData); MessengerInstance.Send(new AddHistogramsMessage(histograms)); }
public IActionResult LoadImage([FromServices] ImageAccount imageAccount) { var image = new ImageAdapter(Request.Form.Files["image_input"]) .Adapt(); var histogramBuilder = new HistogramBuilder(image); var redHistogram = histogramBuilder .Color(ColorSpectrum.Red) .Build(); var greenHistogram = histogramBuilder .Color(ColorSpectrum.Green) .Build(); var blueHistogram = histogramBuilder .Color(ColorSpectrum.Blue) .Build(); var id = imageAccount.Register(image, redHistogram, greenHistogram, blueHistogram); return(Json(new { histograms = new HistogramAdapter(redHistogram, greenHistogram, blueHistogram).Adapt(), id })); }