How to read bitmap image on Arduino
That was a very raw way of trying to read a BMP file. There are a lot of assumptions that might give errors.


The file is a BMP file. The header signature is not checked. 
The image offset is assumed to be directly after the file header. It is not read. 
The image width is less than 256. Only the lowest byte of the 32-bit image width is read. As 272>256 the low byte is 16.
The image height is less than 256. Only the lowest byte of the 32-bit image height is read.


It is a small bitmap but it will take a very long time to read when reading a single byte at a time. There are methods to improve performance but that is an answer to another question. 

A more robust method to read the BMP header and image information is to define them as a struct and read. 

struct bmp_file_header_t {
  uint16_t signature;
  uint32_t file_size;
  uint16_t reserved[2];
  uint32_t image_offset;
};

struct bmp_image_header_t {
  uint32_t header_size;
  uint32_t image_width;
  uint32_t image_height;
  uint16_t color_planes;
  uint16_t bits_per_pixel;
  uint32_t compression_method;
  uint32_t image_size;
  uint32_t horizontal_resolution;
  uint32_t vertical_resolution;
  uint32_t colors_in_palette;
  uint32_t important_colors;
};

bmpImage = SD.open("Circle.bmp", FILE_READ);
...
// Read the file header
bmp_file_header_t fileHeader;
bmpImage.read(&amp;fileHeader, sizeof(fileHeader));
...
// Check signature
...
// Read the image header
bmp_image_header_t imageHeader;
bmpImage.read(&amp;imageHeader, sizeof(imageHeader));
...
// Check image size and format
...
// Locate the pixels
bmpImage.seek(fileHeader.image_offset);


The file and image information are stored in little-endian so that works just fine on an AVR.