I want to convert a bitmap into binary array. My bitmap image is 272*208 pixel monochromatic 1bpp image. I'm confused when the width I get from my image is 16 instead of 272, the height is corrected. And when I skip the bitmap header to get bitmap infomation, I got string of meaningless number in my text file.
#include <SPI.h>
#include <SD.h>
#include <TFT.h>
File bmpImage;
File textFile;
void setup()
{
Serial.begin(9600);
while (!Serial) {
;
}
Serial.print("Initializing SD card...");
if (!SD.begin(53)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
int height = 0;
int width = 0;
// Open
bmpImage = SD.open("Circle.bmp", FILE_READ);
textFile = SD.open("test.txt", FILE_WRITE);
bmpImage.seek(0x12);// width in pixel = 16
width = bmpImage.read();
bmpImage.seek(0x16);// height in pixel = 208
height = bmpImage.read();
Serial.println(width);
Serial.println(height);
int imageSize = height*width;
bmpImage.seek(0x36);//skip bitmap header
for(int i = 0; i < height; i ++) {
for (int j = 0; j < width; j ++) {
textFile.write(bmpImage.read());
textFile.write(" ");
}
textFile.write("\n");
}
bmpImage.close();
textFile.close();
Serial.println("done write");
}
void loop()
{
// nothing happens after setup
}