Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        public static void WritePPMTest(string ppmFileName)
        {
            Picture rgbPicture = PPMReader.ReadFromPPMFile(ppmFileName, stepX, stepY);

            Picture yCbCrPicture = Picture.toYCbCr(rgbPicture);

            writePPM(ppmFileName, yCbCrPicture);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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));
                }
            }
        }
Ejemplo n.º 5
0
 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;
 }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }