Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » in Bitmaps rechecke finden...

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
20.06.2008, 22:39 Uhr
~siddy
Gast


soo ich habe es geschafft die (unkomprimierte)datei richtig einzulesen und zu verändern aber jetzt habe ich ein weiteres problem.. und zwar eine RLE komprimierte datei wird falsch eingelesen... und somit arbeitet der mit CRAP-data

weiss nicht wo mein fehler ist, hier der code ->

Code:
BYTE bild[bih.biHeight][bih.biWidth];
    
    if (bih.biCompression == 0) { /*unkomprimiert*/
        for (y = 0; y < bih.biHeight; y++) {
            rc = fread( &bild[bih.biHeight-y-1], 1, bih.biWidth, f);
            if (rc != bih.biWidth) {
                perror("fread bild");
                fclose(f);
                return 1;
            }
        }
    } else if (bih.biCompression == 1) { /*RLE */
        
        x = 0;
        y = bih.biHeight - 1;
        
        bool = 1;
        while (bool) {
            sign1 = getc(f);
            if (sign1 == -1) {
                perror("file end");
                fclose(f);
                //return 1;
                bool = 0;
            } else if (sign1 != 0) {
                sign2 = getc(f);
                for (i = 0; i < sign1; i++) {
                    bild[y][x] = (BYTE)sign2;
                    x++;
                    /*if (x == bih.biWidth) {
                     y++;
                     x = 0;
                     }*/
                }
            } else {
                sign2 = getc(f);
                if (sign2 == 0) {
                    x = 0;
                    y--;
                } else if (sign2 == 1) bool = 0;
                else if (sign2 == 2) {
                    x = x + getc(f);
                    y = y - getc(f);
                } else {
                    for (i = 0; i < sign2; i++) {
                        bild[y][x] = (BYTE)getc(f);
                        x++;
                        /*if (x == bih.biWidth) {
                         y++;
                         x = 0;
                         }*/
                    }
                    sign2 = getc(f);
                }//sign2>2        
            }//sign1 = 0
        }//while
    }//compressed
    fclose(f);


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: