Example #1
0
        public void ExploreFile(BinaryReader Pic, Queue <SignInfo> existingSigns)
        {
            byte[] buff      = new byte[4];
            string hexBuff   = null;
            string hexSign   = null;
            string sign_name = null;
            int    iterator  = 0;

            do
            {
                buff[0] = buff[1];
                buff[1] = buff[2];
                buff[2] = buff[3];
                buff[3] = Pic.ReadByte();
                hexBuff = BitConverter.ToString(buff);

                for (int i = 0; i < 21; i++)
                {
                    if (hexBuff == signs[i, 1])
                    {
                        if (hexSign == null)
                        {
                            hexSign   = hexBuff;
                            sign_name = signs[i, 0];
                        }
                        else
                        {
                            SignInfo sign = new SignInfo();
                            sign.Sign       = sign_name;
                            sign.hexSign    = hexSign;
                            sign.byteLength = iterator - 12;
                            existingSigns.Enqueue(sign);
                            hexSign   = hexBuff;
                            sign_name = signs[i, 0];
                        }
                        iterator = 0;
                    }
                }

                iterator++;
            } while (!(hexBuff == IEND_sign));
        }
Example #2
0
        public static void Main(string[] args)
        {
            PNG_signs        signs         = new PNG_signs();
            IHDR             ihdr          = new IHDR();
            Queue <SignInfo> existingSigns = new Queue <SignInfo>();


            string fileName = "data\\Screen_color_test_Amiga_4colors.png";
            string fileDir  = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(System.IO.Directory.GetCurrentDirectory())));
            string filePath = Path.Combine(fileDir, fileName);

            int chunk;

            BinaryReader test = new BinaryReader(File.OpenRead(filePath));

            if (!(signs.IsPNG(test)))
            {
                Console.WriteLine("Obraz nie PNG");
            }

            signs.ExploreFile(test, existingSigns);

            /*while(existingSigns.Count != 0)
             * {
             *  existingSigns.Dequeue().Display();
             * }*/

            //DO USUNIECIA - TESTOWE WCZYTANIE

            /*
             * string hex = ""''
             * if (File.Exists(filePath))
             * {
             *  byte[] bytes = File.ReadAllBytes(filePath);
             *  hex = BitConverter.ToString(bytes);
             * }
             *
             * Console.WriteLine(hex);
             * Console.WriteLine("Wypisano");
             * Console.WriteLine(filePath);
             */

            BinaryReader Pic = new BinaryReader(File.OpenRead(filePath));

            if (signs.IsPNG(Pic))
            {
                Console.WriteLine("Obraz PNG");
            }

            while (existingSigns.Count != 0)
            {
                SignInfo s = existingSigns.Dequeue();
                chunk = signs.FindSign(Pic, s.hexSign);

                if (chunk == 1)
                {
                    Console.WriteLine("\n[{0}], byteLength: {1}\n", s.Sign, s.byteLength);

                    if (s.Sign == "IHDR")
                    {
                        ihdr.ReadData(Pic);
                        ihdr.DisplayData();
                    }
                    else if (s.Sign == "PLTE")
                    {
                        Console.WriteLine(" - colorQuantity: {0}", s.byteLength / 3);
                    }
                    else if (s.Sign == "gAMA")
                    {
                        int gama = Int32.Parse(BitConverter.ToString(Pic.ReadBytes(4)).Replace("-", ""), System.Globalization.NumberStyles.HexNumber);
                        Console.WriteLine(" - gama: {0}", (double)gama / 100000);
                    }
                    else if (s.Sign == "cHRM")
                    {
                        cHRM chrm = new cHRM();
                        chrm.ReadData(Pic);
                        chrm.DisplayData();
                    }
                    else
                    {
                        Console.WriteLine(BitConverter.ToString(Pic.ReadBytes(s.byteLength)));
                    }
                }
            }

            Console.WriteLine("\n[IEND]\n");
        }