witam
Zadanie mam nastepujące napisac maly programik ktory bedzie przerabial bmp do skali szarosci no to zaczalem w googlach szperac i szperac no dobra wyczytalem jaki jest format jak sie to robi i urodzilem cos takiego
#include<windows.h>
#include<iostream>
using namespace std;
void main()
{
FILE *in;// plik z bitmapa
in=fopen("c:\\obraz.bmp","rb");
if(!in)
cout<<"error";
else
cout<<"ok";
BITMAPFILEHEADER bmfh;
fread(&bmfh,sizeof(BITMAPFILEHEADER),1,in);
BITMAPINFOHEADER bmih;
fread(&bmih,sizeof(BITMAPINFOHEADER),1,in);
if (bmfh.bfType ==0x4D42)
cout<<"\nok bitmapa";
else
cout<<"\ncos innego niz bitmapa";
cout<<" bit "<<bmih.biBitCount<<" H "<<bmih.biHeight<<" W "<<bmih.biWidth;
//int size;
//size=bmfh.bfSize-bmfh.bfOffBits;
//BYTE *bmpData;
//bmpData=new BYTE[size]; // tablica
//fread(bmpData,sizeof(BYTE),size,in);
/*
if((bmpData = (unsigned char*)calloc(((bmih.biHeight * bmih.biWidth) * 3), sizeof(unsigned char))) == NULL)
{
cout<<"\nCould not allocate any memory for the image array";
}
bmpData = (unsigned char*)calloc(((bmih.biHeight * bmih.biWidth) * 3), sizeof(unsigned char));
for(int Loop = 0; Loop < ((bmih.biHeight * bmih.biWidth) * 3); Loop += 3)
fread(bmpData[Loop], sizeof(unsigned char[3]), 1, in);
*/
cout<<"\n"<<bmih.biSizeImage<< " R"<<bmpData[0]<<" G"<<bmpData[1]<<" B"<<bmpData[2];
}
na koncu dwie wykomentowane czesci ktore(formalnie znalazlem w necie) wlasciwie robia to samo ale chyba nie do konca skapowalem jak to ma dzialac bo nie dziala
czy ktos bylby tak dobry i mnie poprawil ?
prosze o ewentualne wskazowki à propos zapisu :)
dzieki z gory