Exemplo n.º 1
0
        private void openPGMfile(int fileNumber)
        {
            if (fileNumber == 0)
            {
                CurrentFilePath = open.FileNames[0].ToString();    //Пътят до файла;
            }
            else if (fileNumber == 1)
            {
                CurrentFilePath = open.FileNames[1].ToString();    //Пътят до файла;
            }
            StreamReader ImageStreamReader = new StreamReader(CurrentFilePath);
            String       LineBuffer;

            //за запаметяване размерите на изображението дължина и ширина
            String[] ExtractDimension;
            PurgeGlobalData();       //Функция за нулиране на променливите, които се инизиализират в началото,
            // използват се в случай, че се отвори следваща картинка;
            LineBuffer = "#";        //Проверка дали файлът не започва с коментар "#";
            do
            {
                LineBuffer = ImageStreamReader.ReadLine();
            } while (LineBuffer.StartsWith("#"));

            // Проверка дали файлът започва с подходяща информация за форматът си в
            // противен случай се извежда подходящо съобщение

            if (LineBuffer.StartsWith("P2"))
            {
                ImageType = "P2";
            }
            else
            {
                ImageStreamReader.Close();
                MessageBox.Show("File error!");
                PurgeGlobalData();
            }
            //Проверка за други коментари в файла и прочитане на размерите за изображението
            LineBuffer = "#";
            do
            {
                LineBuffer = ImageStreamReader.ReadLine();
            } while (LineBuffer.StartsWith("#"));

            // Прочетените размери на изображението се запаметяват в масива ExtractDimensions
            // след което стойностите им се преобразуват в целочислен вид и се предават на
            // Bitmap изображението

            ExtractDimension = LineBuffer.Split(' ');
            ImageHeight      = int.Parse(ExtractDimension[1]);
            finalImageHeight = ImageHeight;
            ImageWidth       = int.Parse(ExtractDimension[0]);
            finalImageWidth  = ImageWidth;
            CurrentBitmap    = new Bitmap(ImageWidth, ImageHeight);
            CurrentBitmap2   = new Bitmap(ImageWidth, ImageHeight);
            FinalBitmap      = new Bitmap(finalImageWidth, finalImageHeight);


            // Ако файлът започва с правилната първоначална информация "P2", прочитат се
            // стойностите за сивия цвят от него, преобразуват се в целочислен вид и
            // се предават на променливата ImageMaxGreyValue;

            if (ImageType == "P2")
            {
                LineBuffer = "#";
                do
                {
                    LineBuffer = ImageStreamReader.ReadLine();
                } while (LineBuffer.StartsWith("#"));
                ImageMaxGreyValue = int.Parse(LineBuffer);
            }

            if (fileNumber == 0)
            {
                CurrentFile = ImageStreamReader.ReadToEnd();
                CurrentFile = CurrentFile.Replace("\r", " ");
                CurrentFile = CurrentFile.Replace("\n", " ");
            }

            else if (fileNumber == 1)
            {
                CurrentFile2 = ImageStreamReader.ReadToEnd();
                CurrentFile2 = CurrentFile2.Replace("\r", " ");
                CurrentFile2 = CurrentFile2.Replace("\n", " ");
            }


            //Затваряне на входния поток и извикане на функцията за изобразяване BiuldCanvas()
            ImageStreamReader.Close();
            if (fileNumber == 0)
            {
                BuildCanvas(0);
            }
            else if (fileNumber == 1)
            {
                BuildCanvas(1);
            }
        }