Ancho y alto BMP, FileStream Aprende programación con ejercicios C# Sharp

Lección:

Administración de Archivos


Ejercicio:

Ancho y alto BMP, FileStream 40


Objetivo:

Cree un programa de C# para mostrar el ancho y el alto de un archivo BMP mediante FileStream.

Recuerda la estructura de la cabecera:

File type (letters BM)
0-1

FileSize
2-5

Reserved
6-7

Reserved
8-9

Start of image data
10-13

Sizeofbitmapheader
14-17

Width (pixels)
18-21

Height (pixels)
22-25

Numberofplanes
26-27

Sizeofeachpoint
28-29

Compression(0=notcompressed)
30-33

Imagesize
34-37

Horizontal resolution
38-41

Verticalresolution
42-45

Sizeofcolortable
46-49

Importantcolorscounter
50-53


Código:

using System;
using System.IO;
public class exercise188
{
    public static void Main()
    {
        FileStream myFile;
        byte[] data;
        int width, height;
        const int SIZE = 54;

        Console.Write("Enter the name of file: ");
        string fileName = Console.ReadLine();

        if (!File.Exists(fileName))
        {
            Console.WriteLine("The file not exists!!!");
            return;
        }

        try
        {
            myFile = File.OpenRead(fileName);
            data = new byte[SIZE];
            myFile.Read(data, 0, SIZE);
            myFile.Close();

            byte b1 = data[0];
            byte b2 = data[1];

            if ((Convert.ToChar(b1) != 'B')
                || (Convert.ToChar(b2) != 'M'))
            {
                Console.WriteLine("This File is NOT a BMP file");
                return;
            }

            width = data[18] + (data[19] * 256) + (data[20] * 256 * 256) +
            (data[21] * 256 * 256 * 256);

            height = data[22] + (data[23] * 256) + (data[24] * 256 * 256) +
            (data[25] * 256 * 256 * 256);

            Console.WriteLine("Width: {0} - Heigth: {1}", width, height);
        }
        catch (Exception e)
        {
            Console.WriteLine("Error: {0}!!!", e.message());
        }
    }
}