FILE *f = fopen(argv[1],"rb");
system("cls");
printf("\n INFORMACJE O BITMAPIE\n\n");
fread(&File.bfType,sizeof(File.bfType),1,f);
printf(" Typ: %x",File.bfType);
fread(&File.bfSize,sizeof(File.bfSize),1,f);
printf("\n Rozmiar pliku: %d bajtow",File.bfSize);
fread(&File.bfReserved1,sizeof(File.bfReserved1),1,f);
printf("\n Zarezerwowane1: %d",File.bfReserved1);
fread(&File.bfReserved2,sizeof(File.bfReserved2),1,f);
printf("\n Zarezerwowane2: %d",File.bfReserved2);
fread(&File.bfOffBits,sizeof(File.bfOffBits),1,f);
printf("\n Pozycja danych obrazkowych: %d",File.bfOffBits);
printf("\n");
fseek(f,14,SEEK_SET);
fread(&Picture.biSize,sizeof(Picture.biSize),1,f);
printf("\n Wielkosc naglowka informacyjnego: %d",Picture.biSize);
fread(&Picture.biWidth,sizeof(Picture.biWidth),1,f);
printf("\n Szerokosc: %d pikseli",Picture.biWidth);
fread(&Picture.biHeight,sizeof(Picture.biHeight),1,f);
printf("\n Wysokosc: %d pikseli",Picture.biHeight);
fread(&Picture.biPlanes,sizeof(Picture.biPlanes),1,f);
printf("\n Liczba platow (zwykle 0): %d",Picture.biPlanes);
fread(&Picture.biBitCount,sizeof(Picture.biBitCount),1,f);
printf("\n Liczba bitow na piksel: %d (1, 4, 8, or 24)",Picture.biBitCount);
fread(&Picture.biCompression,sizeof(Picture.biCompression),1,f);
printf("\n Kompresja: %d (0=none, 1=RLE-8, 2=RLE-4)",Picture.biCompression);
fread(&Picture.biSizeImage,sizeof(Picture.biSizeImage),1,f);
printf("\n Rozmiar samego rysunku: %d",Picture.biSizeImage);
fread(&Picture.biXPelsPerMeter,sizeof(Picture.biXPelsPerMeter),1,f);
printf("\n Rozdzielczosc pozioma: %d",Picture.biXPelsPerMeter);
fread(&Picture.biYPelsPerMeter,sizeof(Picture.biYPelsPerMeter),1,f);
printf("\n Rozdzielczosc pionowa: %d",Picture.biYPelsPerMeter);
fread(&Picture.biClrUsed,sizeof(Picture.biClrUsed),1,f);
printf("\n Liczba kolorow w palecie: %d",Picture.biClrUsed);
fread(&Picture.biClrImportant,sizeof(Picture.biClrImportant),1,f);
printf("\n Wazne kolory w palecie: %d",Picture.biClrImportant);
//czyta dane obrazka
printf("\n\n Dane obrazka:\n\n");
fseek(f,File.bfOffBits,SEEK_SET);
unsigned char *bitmapImage;
unsigned char tempRGB;
bitmapImage = (unsigned char*)malloc(Picture.biSizeImage);
fread(bitmapImage,Picture.biSizeImage,1,f);
for (int imageIdx = 0;imageIdx < Picture.biSizeImage;imageIdx+=3)
{
tempRGB = bitmapImage[imageIdx];
bitmapImage[imageIdx] = bitmapImage[imageIdx + 2];
bitmapImage[imageIdx + 2] = tempRGB;
/*if(imageIdx > 0 && imageIdx%Picture.biWidth == 0 ){
std::cout<<""<<"\n";
}
if(bitmapImage[imageIdx]== 0 && bitmapImage[imageIdx+1]==0 && bitmapImage[imageIdx+2] == 0){
std::cout<<"a"<<"";
}
else{
std::cout<<"e"<<"";
}*/
printf("%d|%d|%d\n",bitmapImage[imageIdx],bitmapImage[imageIdx+1],bitmapImage[imageIdx+2]);
}
fclose(f);wszystkie dane pokazuje poprawnie gdy dam mu do wczytania obrazek 2x1 pierwszy piksel biały drugi czarny otrzymuje