Brauche Hilfe - Ausgabe eines ASCII Bildes aus einer .xpm-Datei



  • Hallo Leute,

    ich muss eine Aufgabe erledigen, komme aber nicht weiter.

    Man braucht folgende Datei, es ist eine .xpm-Datei mit einem ASCII Bild.
    http://www.uploadarea.de/files/qdtzw8gleeb3vzjctju8xvaec.zip

    Folgendes soll gemacht werden:

    Diese Datei als Header-File einbinden und vertikal gespiegeltes Bild als Text ausgeben.

    Das XPM-File-Format definiert als C-Datenstruktur ein Array mit Textzeilen, in welcher je 1 oder 2 Zeichen für einen Bildpunkt stehen. Diesen Zeichen sind zuvor Farben (RGB-Anteile z.B. #FF0000 für rot) zugeordnet. Am Anfang der Datei stehen die Dimension (X=128, Y=128 (0,0) ist linke,obere Ecke) die Anz. der Farben (z.B. 1103), sowie die Anzahl der ASCII-Zeichen pro Bildpunkt (z.B. 2).

    Bitte um dringende Hilfe!



  • Wäre ganz gut wenn du uns auch noch sagst wo du genau nicht weiter kommst.Vielleicht ein wenig Code wo du gerade stecken bleibst.

    EDIT:
    Schau mal auf Wikipedia, das ist das anze Format noch genauer und hier http://m.c-plusplus.net/240135 der letzte Post könnte vielleicht interessant sein?



  • Welche Art soll die Hilfe denn sein?

    Ich denke, als Konsolenanwendung wird es schwierig, RGB Farben in dem Umfang zu nutzen.

    Ist die Frage in der richtigen Kategorie?

    Das Ziel ist schlussendlich ein 128x128 Image...

    Ciao

    PS: Mit gimp kann man sich das mal anschauen 😉



  • ch muss das Bild mit der for-Schleife und printf ausgeben. Dabei spielen die Farben glaub ich keine Rolle.



  • Ja wie weit bist du denn ? 🙄



  • Das XPM sieht so aus, als wenn es eine simple Stringausgabe wäre, wobei die Strings in einem Array vorliegen,

    int main()
    {
      size_t i,y=sizeof tux_xpm/sizeof*tux_xpm; /* y Strings sind in dem Stringarray enthalten */
      for(i=y-128;i<y;++i) /* die letzten 128 Strings des Arrays ausgeben */
        puts(tux_xpm[i]);
      return 0;
    }
    

    Für deine vertikale Spiegelung musst du die Zeichen der Strings bloß noch in umgekehrter Reihenfolge ausgeben, dazu schreibst du dir eine entsprechende Funktion und benutzt diese statt o.g. puts.


Anmelden zum Antworten