ein mit 'auxDIBImageLoad' geladenes Bitmap auf der Y-Achse spiegeln
-
du kopierst nur die erste farbkomponente eines pixels, eine ganze scanline waere Image->sizeX * 3 bytes gross, daraus ergibt sich dann auch die korrekte startadresse einer scanline.
beachte auch, dass du tmpImage->data vorher allozieren musst.
-
Ich komme da im Moment etwas durcheinander, könntest du kurz einen kleinen Code schreiben bitte?

-
ich bin mir sicher, dass du das auch alleine hinkriegst.
-
Nagut, ich hab das jetzt so geschrieben:
AUX_RGBImageRec* loadBMP(const char* Filename) { AUX_RGBImageRec* tImage = auxDIBImageLoad(Filename), * Image = tImage; for (unsigned int y = 0; y < tImage->sizeY; ++y) { for (unsigned int x = 0; x < tImage->sizeX; ++x) { Image->data[ y*x+x ] = tImage->data[ (tImage->sizeY-y-1)*x+x ]; } } return Image; }Das Bild ist mit dieser Funktion immer noch gespiegelt und die Pixel sind nach oben hin zunehmend dstark 'verkrisselt'

-
ich fasse nochmal zusammen:
1. du hast ein bild der groesse sizeX * sizeY pixel
2. jeder pixel besteht aus drei bytes (rot,gruen,blau)
3. eine bildzeile ist also sizeX * 3 bytes gross (siehe oben)
4. das gesamte bild ist also sizeX*sizeY*3 bytes gross (so viel speicher brauchst du)
5. eine bildzeile y beginnt an position y*sizeX*3
-
Wunderbar, ich komm der Sache schon näher. Danke schon mal

Allerdings spiegelt meine Funktion jetzt nur die Hälftefor (unsigned int y = 0; y < tImage->sizeY; ++y) { for (unsigned int x = 0; x < tImage->sizeX*3; ++x) { Image->data[y*tImage->sizeX*3+x] = tImage->data[(tImage->sizeY-y-1)*tImage->sizeX*3+x]; } }
-
Fehler gefunden! Ich hatte zwei mal den selben Pointer, ich lad das Bild einfach zwei mal, oder wie könnte ich das besser machen?
-
tausche die bytes anstatt zu ueberschreiben, dann brauchste auch kein zweites image. beachte dann die abbruchbedingung der aeusseren schleife.
-
Stimmt, gute Idee.
Danke für deine Hilfe
-
schoen dass ich dich dazu ermutigen konnte, dich "selbststaendig" mit der loesung des problems zu beschaeftigen.
beim naechsten mal koenntest du ja vielleicht schon versuchen, kleinere fehler selber zu beheben bevor du ins forum schreibst