public Bitmap LoadPPMImage(string fileName) { using (var ppmReader = new PPMReader(fileName)) { try { _image = ppmReader.ReadFile(); } catch (Exception ex) { MessageBox.Show(ex.Message); return(null); } } Bitmap bitmap; if (_image.Type == PPMImageType.P6) { int maxR = 0, maxG = 0, maxB = 0; bitmap = PPM_P6Parser.Parse(_image, ref maxR, ref maxG, ref maxB); _image.MaxR = maxR; _image.MaxG = maxG; _image.MaxB = maxB; } else { bitmap = PPM_P3Parser.Parse(_image); } return(bitmap); }
public static void WritePPMTest(string ppmFileName) { Picture rgbPicture = PPMReader.ReadFromPPMFile(ppmFileName, stepX, stepY); Picture yCbCrPicture = Picture.toYCbCr(rgbPicture); writePPM(ppmFileName, yCbCrPicture); }
public void PPMImageReader_correctly_parses_P6_file() { var reader = new PPMReader("test1.ppm"); var file = reader.ReadFile(); Assert.AreEqual(1, file.BytesPerColor); Assert.AreEqual(PPMImageType.P6, file.Type); Assert.AreEqual(610, file.Columns); Assert.AreEqual(460, file.Rows); }
private void LoadButton_Click(object sender, RoutedEventArgs e) { var openDialog = new OpenFileDialog(); openDialog.Filter = "Image (*.ppm)|*.ppm"; if (openDialog.ShowDialog() == true) { _filename = openDialog.FileName; if (shouldDepict) { source.Source = BitmapToImageSource(PPMReader.ReadBitmapFromPPM(_filename)); } } }
private async void ApplyFilter() { if (_filename == null) { consoleOutput.Text = "Incorrect file"; return; } if (_divisor == 0) { consoleOutput.Text = "Divisor can't be 0"; return; } if (_filter.All(x => x == 0)) { consoleOutput.Text = "Matrix can't be empty"; return; } LoadButton.IsEnabled = false; ApllyBut.IsEnabled = false; if (CompareFilterZero(0, 6) && CompareFilterZero(19, 25) && CompareFilterZero(4, 25, 5) && CompareFilterZero(0, 20, 5)) { sbyte[] filter3 = new sbyte[] { _filter[6], _filter[7], _filter[8], _filter[11], _filter[12], _filter[13], _filter[16], _filter[17], _filter[18] }; await Task.Run(() => runFilter3(filter3, _divisor, _offset, _filename, _compareCPU)); } else { await Task.Run(() => runFilter5(_filter, _divisor, _offset, _filename, _compareCPU)); } ApllyBut.IsEnabled = true; LoadButton.IsEnabled = true; if (shouldDepict) { string newFilename = _filename.Substring(0, _filename.Length - 4) + "f_gpu.ppm"; if (File.Exists(newFilename)) { dest.Source = BitmapToImageSource(PPMReader.ReadBitmapFromPPM(newFilename)); } else { newFilename = _filename.Substring(0, _filename.Length - 4) + "f_cpu.ppm"; if (File.Exists(newFilename)) { dest.Source = BitmapToImageSource(PPMReader.ReadBitmapFromPPM(newFilename)); } } } return; }
public static void WriteJPEG(string ppmFileName, string jpegFileName) { Picture rgbPicture = PPMReader.ReadFromPPMFile(ppmFileName, stepX, stepY); Picture yCbCrPicture = Picture.toYCbCr(rgbPicture); yCbCrPicture.Reduce(); yCbCrPicture.Transform(); yCbCrPicture.Quantisize(); yCbCrPicture.ZickZackSort(); yCbCrPicture.ResortPicture(); yCbCrPicture.CalculateCoefficients(); yCbCrPicture.GenerateHuffmanTrees(); JPEGWriter.WritePictureToJPEG(jpegFileName, yCbCrPicture); }
public static IPNMReader GetIPNMReader(PNMType ptype) { IPNMReader imReader = null; switch (ptype) { case PNMType.PBM: imReader = new PBMReader(); break; case PNMType.PGM: imReader = new PGMReader(); break; case PNMType.PPM: imReader = new PPMReader(); break; } return(imReader); }