Esempio n. 1
0
        static void BmpToJls()
        {
            Console.WriteLine("The name of the source file bmp");

            FileStream    fileIn = new FileStream(Console.ReadLine() + ".bmp", FileMode.Open);
            ReadImageFile bmp    = new ReadImageFile(fileIn);

            fileIn.Close();

            Console.WriteLine("The name of the output file jls");
            FileStream   fileOut = new FileStream(Console.ReadLine() + ".jls", FileMode.Create);
            BinaryWriter strOut  = new BinaryWriter(fileOut);

            strOut.Write(bmp.bmpheader.bfType);
            strOut.Write(bmp.bmpheader.bfSize);
            strOut.Write(bmp.bmpheader.bfReserved1);
            strOut.Write(bmp.bmpheader.bfReserved2);
            strOut.Write(bmp.bmpheader.bfOffBits);

            strOut.Write(bmp.bmpinfo.biSize);
            strOut.Write(bmp.bmpinfo.biWidth);
            strOut.Write(bmp.bmpinfo.biHeight);
            strOut.Write(bmp.bmpinfo.biPlanes);
            strOut.Write(bmp.bmpinfo.biBitCount);
            strOut.Write(bmp.bmpinfo.biCompression);
            strOut.Write(bmp.bmpinfo.biSizeImage);
            strOut.Write(bmp.bmpinfo.biXPelsPerMeter);
            strOut.Write(bmp.bmpinfo.biYPelsPerMeter);
            strOut.Write(bmp.bmpinfo.biClrUsed);
            strOut.Write(bmp.bmpinfo.biClrImportant);

            Compress compress = new Compress();

            compress.Compressing(bmp.data, ++(bmp.count), strOut, bmp.bmpinfo.biHeight, bmp.bmpinfo.biWidth);
            compress.Compressing(bmp.data, ++(bmp.count), strOut, bmp.bmpinfo.biHeight, bmp.bmpinfo.biWidth);
            compress.Compressing(bmp.data, ++(bmp.count), strOut, bmp.bmpinfo.biHeight, bmp.bmpinfo.biWidth);
            compress.Write(strOut);

            strOut.Close();
            fileOut.Close();
        }
Esempio n. 2
0
        static void PSNR()
        {
            Console.WriteLine("PSNR for two bmp");

            Console.WriteLine("Source bmp");
            FileStream    fileSource = new FileStream(Console.ReadLine() + ".bmp", FileMode.Open);
            ReadImageFile bmpSource  = new ReadImageFile(fileSource);

            fileSource.Close();

            Console.WriteLine("Restored bmp");
            FileStream    fileRestored = new FileStream(Console.ReadLine() + ".bmp", FileMode.Open);
            ReadImageFile bmpRestored  = new ReadImageFile(fileRestored);

            fileRestored.Close();

            double psnrBlue = 0, psnrGreen = 0, psnrRead = 0;

            try
            {
                for (int i = 0; i < bmpSource.bmpinfo.biHeight * bmpSource.bmpinfo.biWidth; i++)
                {
                    psnrBlue  += Math.Pow((bmpSource.data[++bmpSource.count] - bmpRestored.data[++bmpRestored.count]), 2);
                    psnrGreen += Math.Pow((bmpSource.data[++bmpSource.count] - bmpRestored.data[++bmpRestored.count]), 2);
                    psnrRead  += Math.Pow((bmpSource.data[++bmpSource.count] - bmpRestored.data[++bmpRestored.count]), 2);
                }

                Console.WriteLine();
                Console.WriteLine("PSNR Blue    - " + 10 * Math.Log10((bmpSource.bmpinfo.biHeight * bmpSource.bmpinfo.biWidth * Math.Pow((Math.Pow(2, 8) - 1), 2)) / psnrBlue));
                Console.WriteLine("PSNR Green   - " + 10 * Math.Log10((bmpSource.bmpinfo.biHeight * bmpSource.bmpinfo.biWidth * Math.Pow((Math.Pow(2, 8) - 1), 2)) / psnrGreen));
                Console.WriteLine("PSNR Red     - " + 10 * Math.Log10((bmpSource.bmpinfo.biHeight * bmpSource.bmpinfo.biWidth * Math.Pow((Math.Pow(2, 8) - 1), 2)) / psnrRead));
                Console.WriteLine();
            }
            catch (Exception e)
            {
                StackTrace st = new StackTrace(e, true);

                Console.WriteLine(DateTime.Now + " \nException: " + e + "\n" + st);
            }
        }
Esempio n. 3
0
        static void JlsToBmp()
        {
            Console.WriteLine("The name of the source file jls");

            FileStream    fileIn = new FileStream(Console.ReadLine() + ".jls", FileMode.Open);
            ReadImageFile jls    = new ReadImageFile(fileIn);

            fileIn.Close();

            byte[] data_Byte = new byte[jls.data.Length - jls.count - 1];

            Array.Copy(jls.data, ++(jls.count), data_Byte, 0, jls.data.Length - jls.count);

            List <bool> data = new List <bool> {
            };

            for (int i = 0; i < data_Byte.Length; i++)
            {
                for (int j = 7; j >= 0; j--)
                {
                    data.Add(Convert.ToBoolean((data_Byte[i] >> j) & 1));
                }
            }
            int index = 0;

            Decompress decompress = new Decompress();

            double[,] blue  = decompress.Decompressing(data, ref index, jls.bmpinfo.biHeight, jls.bmpinfo.biWidth);
            double[,] green = decompress.Decompressing(data, ref index, jls.bmpinfo.biHeight, jls.bmpinfo.biWidth);
            double[,] red   = decompress.Decompressing(data, ref index, jls.bmpinfo.biHeight, jls.bmpinfo.biWidth);

            Console.WriteLine("The name of the output file bmp");
            FileStream   fileOut = new FileStream(Console.ReadLine() + ".bmp", FileMode.Create);
            BinaryWriter strOut  = new BinaryWriter(fileOut);

            strOut.Write(jls.bmpheader.bfType);
            strOut.Write(jls.bmpheader.bfSize);
            strOut.Write(jls.bmpheader.bfReserved1);
            strOut.Write(jls.bmpheader.bfReserved2);
            strOut.Write(jls.bmpheader.bfOffBits);

            strOut.Write(jls.bmpinfo.biSize);
            strOut.Write(jls.bmpinfo.biWidth);
            strOut.Write(jls.bmpinfo.biHeight);
            strOut.Write(jls.bmpinfo.biPlanes);
            strOut.Write(jls.bmpinfo.biBitCount);
            strOut.Write(jls.bmpinfo.biCompression);
            strOut.Write(jls.bmpinfo.biSizeImage);
            strOut.Write(jls.bmpinfo.biXPelsPerMeter);
            strOut.Write(jls.bmpinfo.biYPelsPerMeter);
            strOut.Write(jls.bmpinfo.biClrUsed);
            strOut.Write(jls.bmpinfo.biClrImportant);

            for (int i = 0; i < jls.bmpinfo.biHeight; i++)
            {
                for (int j = 0; j < jls.bmpinfo.biWidth; j++)
                {
                    strOut.Write(Convert.ToByte(blue[i, j]));
                    strOut.Write(Convert.ToByte(green[i, j]));
                    strOut.Write(Convert.ToByte(red[i, j]));
                }
            }

            strOut.Close();
            fileOut.Close();
        }