Bild spiegeln
-
Hallo,
ich habe Flugzeugaufnahmen, die als Binärdateien (16 Bit unsigned int) mit einer Größe von 171MB vorliegen. Mein Problem ist, dass die Bilder auf dem Kopf stehen, d. h. die letzte Zeile soll die erste sein. Wie sortiere ich die Daten am Besten um? Ich benutze g++ unter Linux.Vielen Dank für Eure Tipps
Lucky750
-
Na du liest das Bild immer in 16Bit blöcken ein, wenn du genau weißt wieviele Bytes
das Bild groß ist, kannst du ein Array verwenden, bei 1024Bytes wäre es
so:
unsigned short int array[512];Da liest du immer 16Bit ein und speicherst es in einem Element, und nachdem
einlesen fängst du mit der Ausgabe einfach beim letzten Element an und arbeitest
dich zum ersten vor.
-
Bei der Dateigröße wäre es mir allderdings lieber, wenn man mit direktem Zugriff auf die Daten, z.B. die der letzten Zeile arbeiten könnte. Andererseits gehen 171MB locker in den Arbeitsspeicher.
Viele Grüsse
Lucky750
-
Du könntest mit fseek() einfach an das Dateiende springen und von dort einlesen
bis zum Anfang der Datei.
Dass 170MB einiges sind stimmt schon, aber ich denke du willst das Bild spiegeln
und wieder als Datei speichern oder`?
Dann muss das Programm nur auf dem PC funktionieren auf welchem du die Bilder
spiegeln willst.Ansonsten ist es auch möglich nur Teile einer Datei in den Speicher zu laden und
nicht das gesamte auf einmal. Wie das aber nochmal ging weiß ich jetzt nicht auswendig.Wenn die Datei auf einmal in den Speicher passt würd ich den Speicher auch ausnutzen,
wozu denn soviel Aufwand betreiben wenn es auch einfacher geht.