Proposed exercise
Create a C# program to display the width and the height of a BMP file, using a FileStream.
Remember the structure of the header:
TYPE OF INFORMATION | POSITIONINTHEFILE |
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 |
Output
Solution
public class BmpFileStream { public static void Main() { const int SIZE = 54; byte[] data; int width, height; Console.Write("Enter the name: "); string name = Console.ReadLine(); try { if(File.Exists(name)) { FileStream file = File.OpenRead(name); data = new byte[SIZE]; file.Read(data, 0, SIZE); file.Close(); byte b1 = data[0]; byte b2 = data[1]; if( (Convert.ToChar(b1) != 'B') || (Convert.ToChar(b2) != 'M')) { Console.WriteLine("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) { Console.WriteLine("Error!!!"); } } }