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.


Anmelden zum Antworten