[C++] Rozłożenie obrazka na RGB

0

Witam.
Proszę o pomoc w napisaniu programu. Nie jestem zbyt dobra w te klocki, więc proszę o wyrozumiałość.
Program polega na wczytaniu pliku (mapy bitowej), wyodrębnieniu bajtów odpowiedzialnych za składowe piksela (RGB), stworzenie 3 odrębnych map bitowych, na których zapiszemy obrazki w wyodrębnionych wcześniej kolorach RGB oraz zapis map do poszczególnych plików.

Do tej pory udało mi sie wypocić coś takiego:

int main () {
 FILE * plik;
 long lSize;
 char * buffer;
 size_t result;
 int szerokosc, wysokosc;


 plik = fopen ( "twarz.bmp" , "rb" );
 if (plik==NULL) {fputs ("File error",stderr); exit (1);}


 fseek (plik , 18 , SEEK_SET);
 fread (&szerokosc, sizeof (szerokosc),1 , plik);
 cout<<szerokosc<< endl;

 fseek (plik , 22 , SEEK_SET);
 fread (&wysokosc, sizeof (wysokosc),1 , plik);
 cout<<wysokosc<< endl;

 unsigned char tabB [szerokosc][wysokosc], tabG [szerokosc][wysokosc], tabR [szerokosc][wysokosc];
 unsigned char naglowek [54];
 lSize = ftell (plik);
 rewind (plik);

 fseek (plik, 54, SEEK_SET);
 //fread (&tab, sizeof (tab), 2, plik);
 int i, j;
 for (i=0; i < wysokosc; i++)
    {
       for (j=0; j < szerokosc; j++)
       {
           fread (&tabB[i][j],1,1,plik);
           fread (&tabG[i][j],1,1,plik);
           fread (&tabR[i][j],1,1,plik);

No właśnie. Nie za bardzo wiem co dalej. Facet, z którym mam programowanie twierdzi, że to co piszę jest dobre, i że brakuje mi tylko kilku linijek do zakończenia tego programu.
Jeśli ktokolwiek byłby w stanie mi pomóc dokończyć to zadanie, byłabym bardzo wdzięczna.:)

0
unsigned char tabB [szerokosc][wysokosc], tabG [szerokosc][wysokosc], tabR [szerokosc][wysokosc];

Jakim cudem to ci przechodzi przez kompilator??

0

Nie mam pojęcia, ale przechodzi ;-)
A co jest to źle?
Jak już wspominałam, kiepski ze mnie programista.
Jak mi to sprawdzał facet od programowania, to powiedział, ze jest dobrze, a kompilator się na tym nie zawieszał. Ale sama nie wiem czy jest to dobrze.

0
winerfresh napisał(a)
unsigned char tabB [szerokosc][wysokosc], tabG [szerokosc][wysokosc], tabR [szerokosc][wysokosc];

Jakim cudem to ci przechodzi przez kompilator??

A dlaczego miałoby nie?

0

To, że to nie jest const i tak nie tworzy się tablic dynamicznych??

0

Czyli tylko ta linijka jest źle?

0

Ale bo mnie pamięć zwodzi, ale wydaje mi się, że od obecnie C++ pozwala na dynamiczne alokowanie tablic w taki sposób. Możliwe, że nawet C. Ale nie wiem, jakie są tego konsekwencje. Kompilator nic nie pluje.

0

To że tak wolno w G++ to nie znaczy, że wszędzie. To nie jest standard [CIACH!] C++ tylko [CIACH!] ficzer G++. Ludzie weźcie się ogarnijcie.

0

ANSI C i C++ tego nie dopuszczają, C99 już tak. To jest tylko rozszerzenie g++, które w dodatku nie zawsze przechodzi (-pedantic i tego typu switche).

1 użytkowników online, w tym zalogowanych: 0, gości: 1