#include using namespace std; #pragma pack(push, 1) struct BITMAPFILEHEADER { short bfType; int bfSize; short bfReserved1; short bfReserved2; int bfOffBits; }; struct BITMAPINFOHEADER { int biSize; int biWidth; int biHeight; short biPlanes; short biBitCount; int biCompression; int biSizeImage; int biXPelsPerMeter; int biYPelsPerMeter; int biClrUsed; int biClrImportant; }; struct Pixel { unsigned char b, g, r; }; #pragma pack(pop) int main() { char* temp = new char[sizeof(BITMAPFILEHEADER)]; cin.read(temp, sizeof(BITMAPFILEHEADER)); cout.write(temp, sizeof(BITMAPFILEHEADER)); BITMAPFILEHEADER* bfh = (BITMAPFILEHEADER*)(temp); temp = new char[sizeof(BITMAPINFOHEADER)]; cin.read(temp, sizeof(BITMAPINFOHEADER)); cout.write(temp, sizeof(BITMAPINFOHEADER)); BITMAPINFOHEADER* bih = (BITMAPINFOHEADER*)(temp); cin.seekg(bfh->bfOffBits, ios::beg); // bfOffBits wskazuje poczÄ…tek danych obrazka temp = new char[sizeof(Pixel)]; Pixel *p = new Pixel; while(cin.read(temp, sizeof(Pixel))) { p = (Pixel*)(temp); p->b = 255 - p->b; //p->g = 255 - p->g; p->r = 255 - p->r; cout.write(temp, sizeof(Pixel)); } return 0; }