Ejercicio
Ancho y alto BMP, FileStream
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 de Ejemplo
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());
}
}
}