Dzień dobry. Od kilku dni męczę się z tworzeniem pliku bmp w c++. Napisałem taki kod:
#include <fstream>
#include <iostream>
struct BMPHeader
{
char bitmapSignatureBytes[2] = { 'B','M' };
uint32_t sizeOfBitmapFile = 54 + 786432;
uint32_t reservedBytes = 0;
uint32_t pixelDataOffset = 54;
} bmpHeader;
struct BMPInfoHeader
{
uint32_t sizeOfHeader = 40;
uint32_t width = 512;
uint32_t height = 512;
uint16_t numberofColorPlanes = 1;
uint16_t colorDepth = 24;
uint32_t compressionMethod = 0;
uint32_t rawBitmapSize = 0;
int32_t horizontalResolution = 3780;
int32_t verticalResolution = 3780;
uint32_t colorTableEntries = 0;
uint32_t importantColors = 0;
} bmpInfoHeader;
struct Pixel
{
uint8_t red = 0;
uint8_t green = 255;
uint8_t blue = 255;
} pixel;
int main()
{
std::ofstream file("image.bmp", std::ios::binary);
file.write((char*)&bmpHeader, 14);
file.write((char*)&bmpInfoHeader, 40);
size_t numberOfPixels = bmpInfoHeader.width * bmpInfoHeader.height;
for (int i = 0; i < numberOfPixels; i++) {
file.write((char*)&pixel, 3);
}
file.close();
}
Niestety pomimo tego, że plik jest tworzony to nie można go wyświetlić. Nie mogę znaleźć błędu. Oprócz tego chciałem dodać do niego jakiś kształt (okrąg, kwadrat). Zakładam, że błąd znajduję się w nagłówku, ale nie wiem gdzie. Jeśli ktoś ma pomysł jak pozbyć się tego błędu, będę bardzo wdzięczny.
Z góry dziękuję i pozdrawiam