Bilder auslesen -> Bilder erstellen



  • Hallo, ich habe die Basics von C drauf, jedoch stoße ich bei dieser Aufgabe leider an meine Grenzen:

    Ich wollte ein Programm schreiben das schwarze und weiße Striche in Bildern erkennt, und dann als 1, bzw. 0 abspeichert, die Striche sollen 3 Pixel dick sein, das Programm muss die Striche eigentlich nur eindimensional auslesen können. Ein Bsp.: 2x 3 Pixel weiß und dann 2x 3 Pixel schwarz: Das Programm soll 0011 abspeichern. Wie mache ich das jetzt? Ich kenne leider keinen Befehl zum auslesen von Bildern, das Bildformat ist egal, auch, ob es grafisch, oder aus dem Code des Bildes ausgelesen wird, wobei zweiteres sicherlich einfacher und fehlerfreier wäre, oder?

    Dann müsste das Programm das ganze noch umgekehr können, also man gibt eine Zahl ein und das Programm erstellt ein Bild.

    Vielen Dank für ihre Hilfe.
    mfg doo



  • Ist das jetzt eine Hausaufgabe, oder hast du dir das einfach so ausgedacht?

    Und welche Bildformate er erkennen soll, das mußt du schon selbst festlegen.

    Du hast halt einen Speicherbereich(X * Y), in dem deinen Grafikdaten liegen (Farbwerte oder monochrom?).

    So wie ich die Aufgabe verstehe, liegen die Striche immer horizontal angeordnet. Dann prüfst du jeweils 3 Pixel und erzeugst daraus dann die Ausgabe (0 oder 1). Was soll denn passieren, wenn innerhalb der 3 Pixel sowohl schwarz als auch weiß vorkommt (1/2 -)?



  • Hi !
    Die Programmiersprache C kennt keine Befehle zum Auslesen von Bildern.
    Also hast du zwei Möglichkeiten, um an deine Pixeldaten ranzukommen:
    Entweder du besorgst dir eine C-Bilbliothek, die Bilddateien lesen kann, oder du programmierst es selbst.
    Grafikbibliotheken für C gibt es viele kostenlos im Internet.

    Die zweite Möglichkeit hat den Vorteil, das du dabei über deine Basics hinausgehst .
    Du lernst dabei auch mit der großen Anzahl der Stolpersteine zurechtzukommen, die dir C in den Weg legt 😉
    Am einfachsten lassen sich BMP-Dateien bearbeiten( lesen/schreiben ).
    Dazu kannst du mit fread die beiden Strukturen BITMAPINFOHEADER und BITMAPFILEHEADER einlesen. Diese beiden Strukturen befinden sich am Anfang einer BMP-Datei. Sie enthalten die Informationen über die BMP-Datei.
    Weiteres kannst du über Google erfahren 🙂
    Die Variable

    DWORD   bfOffBits;
    

    der Struktur BITMAPFILEHEADER hat den Beginn der Pixeldaten, relativ zum Dateianfang, gespeichert.
    Die Variable bfOffBits zeigt also auf den ersten Pixel deines Bildes !

    MfG
    T.B.s.


Anmelden zum Antworten