Wymodziłem na razie coś takiego. Nie wiem na ile jest to sprawne i mam prośbę do jakieś dobrej duszy, o sprawdzenie tych moich wypocin.
Jest to zrzutka z tego co znalazłem w necie i na forach.
#include <iostream>
#include <fstream>
#include <stdint.h>
using namespace std;
int main()
{
cout<<"*** Program konwertujacy plik BMP na JPG wedlug algorytmu Shannon'a **"<<endl;
cout<<"Podaj lokalizacje pliku bitmapy: ";
char lokalizacja_pliku=new char;
cin>>lokalizacja_pliku;
ifstream plikbmp;
plikbmp.open(lokalizacja_pliku, ios::in | ios::binary);
if(!plikbmp.is_open())
{
cerr<<"Brak mozliwosci otwarcia pliku z lokalizacji: "<<lokalizacja_pliku<<endl;
system("pause");
return 0;
}
else
{
struct bmpHeader
{
uint16_t bfType;
uint32_t bfSize;
uint16_t bfReserved1;
uint16_t bfReserved2;
uint32_t bfOffBits;
uint32_t biSize;
uint32_t biWidth;
uint32_t biHeight;
uint16_t biPlanes;
uint16_t biBitCount;
uint32_t biCompression;
uint32_t biSizeImage;
uint32_t biXPelsPerMeter;
uint32_t biYPelsPerMeter;
uint32_t biClrUsed;
uint8_t biClrImportant;
uint8_t biClrRotation;
uint16_t biReserved;
} __attribute__ ((packed));
bmpHeader hfile;
cout<<"\nRozmiar naglowka: "<<sizeof(bmpHeader)<<" Bajty"<<endl;
*memset(&hfile, 0, sizeof(bmpHeader)); *NIE WIEM CZY TA LINIA JEST POTRZEBNA (?)
plikbmp.read((char*)&hfile.bfType, 2); //BEZ TEJ LINII PONIŻSZA WYKONUJE SIĘ NIEPOPRAWNIE, NIE WIEM DLACZEGO :/
cout<<"bfType: "<<((char*) &(hfile.bfType))[0]<<((char*) &(hfile.bfType))[1]<<" ("<<hfile.bfType<<")"<<endl;
cout<<"bfReserved1: "<<hfile.bfReserved1<<endl;
cout<<"bfReserved2: "<<hfile.bfReserved2<<endl;
cout<<"bfOffBits: "<<hfile.bfOffBits<<endl;
cout<<"biWidth: "<<hfile.biWidth<<endl;
cout<<"biHeight: "<<hfile.biHeight<<endl;
cout<<"biPlanes: "<<hfile.biPlanes<<endl;
cout<<"biBitCount: "<<hfile.biBitCount<<endl;
cout<<"biCompression: "<<hfile.biCompression<<endl;
cout<<"biSizeImage: "<<hfile.biSizeImage<<endl;
cout<<"biXPelsPerMeter: "<<hfile.biXPelsPerMeter<<endl;
cout<<"biYPelsPerMeter: "<<hfile.biYPelsPerMeter<<endl;
cout<<"biClrUsed: "<<hfile.biClrUsed<<endl;
cout<<"biClrImportant: "<<hfile.biClrImportant<<endl;
cout<<"biClrRotation: "<<hfile.biClrRotation<<endl;
cout<<"biReserved: "<<hfile.biReserved<<endl;
plikbmp.close();
}
system("pause");
return 0;
}