Bitmap-Bilder einlesen, bearbeiten und erzeugen



  • @yberion45 Hi, als hättest du es gewusst muss nun auch ich diese Aufgabe lösen. Wo muss ich denn die Bilder ablegen, damit das Programm diese erkennt? Danke im Voraus.



  • @MarioLuigi sagte in Bitmap-Bilder einlesen, bearbeiten und erzeugen:

    Wo muss ich denn die Bilder ablegen, damit das Programm diese erkennt?

    Abgesehen davon, das der letzte Post 3 Monate her ist, wollte ich selbst mal schauen und will versuchen eine Antwort zu geben, mit dem Wissen, das C für mich schon etwas anstrengend unbekannt ist und in der Hoffnung korrigiert zu werden.

    FILEscheint ein eigener Datentyp zu sein, der die Bildquelle darstellen soll. Ich erkenne aber nirgendwo die Definition dafür. Außer "Bildbearbeitung.h"wird ja nichts anderes eingebunden?



  • FILE kommt aus der stdio.h und es ein eigener datentyp (eine struktur meine ich) für dateien. in der praktischen anwendung unterscheidet er sich nicht aber nicht von der unter unix üblichen vorgehensweise einen integer zu deklarieren, mit dem unterschied, dass man funktionen mit einem f davor verwenden muss.



  • Ok, danke 😉



  • @MarioLuigi sagte in Bitmap-Bilder einlesen, bearbeiten und erzeugen:

    Wo muss ich denn die Bilder ablegen, damit das Programm diese erkennt?

    • Wenn du in deinem Code nur den Dateinamen angibst, wird üblicherweise (UN*X, Windows) im Arbeitsverzeichnis (Current Working Directory, cwd) gesucht.
    • Gibst du einen relatifen Pfad an ( zB. ../../foo/bar/qux.bmp), so ist dieser relativ zum CWD.
    • Bei vollständigen Pfaden sollte die Sache klar sein.

    Was anderes: Nicht ausgraben drei Jahre alte Threads, du sollst, junger Padawan. Aufmachen neuen Thread nächstes Mal mit deiner Frage du solltest.



  • @MarioLuigi: Den Code von @yberion45 solltest du aber nicht übernehmen, denn die Ressourcenverwaltung (z.B. Schließen der geöffneten Dateien) ist mangelhaft.
    Auch die Verwendung der Konstanten (für Arraygrößen und Schleifendurchläufe) - anstatt dynamisch aus der BMP-Datei - ist überarbeitungswürdig.



  • @Swordfish Ok, danke für die Antwort. Ich keine alten Threads mehr ausgraben werde, mein Meister. Da ich aber noch sehr frisch bin was C angeht, verstehe ich noch nicht so ganz wie ich dem Programm jetzt die Bilder übergebe.

    Hatte ein Programm entdeckt, was ein paar Bilddaten ausgibt. Da ist das mit dem Einlesen verständlich, weil da nur ein Bild betrachtet wird indem einfach der Pfad eingegeben wird.
    In dem Programm oben müssen aber ja 5 Bilder betrachtet werden. Wenn man nun unter Windows die 5 Bilder einfach auf die exe "zieht", dann steht da zwar "Argumente wurden gefunden!" und "Es handelt sich um eine BMP Datei". Danach schließt sich die exe aber wieder.

    int main()
    {
        unsigned char bilddaten[54];
    
        char name[40];
    
        int byte;
        int index=0;
    
        printf("Hier bitte Pfad der BMP Datei eingeben\n");
        scanf("%s",&name);
    
        FILE * file;
    
        file = fopen(name, "rb");
    
        if (file !=NULL){
            do{
                byte=fgetc(file);
                bilddaten[index]=byte;
    
                index++;
    
                if (index==54)break;
            }while (byte!=EOF);
        }else {
            for (int i=0;i<29;i++){
                    bilddaten[i]='\0';
    
            }
            }
        fclose(file);
    
        int breite = bilddaten [20-1]*256 +bilddaten[19-1];
        int hoehe = bilddaten [24-1]*256 + bilddaten[23-1];
        int bits = bilddaten [29-1];
    
        printf("\nBreite: %d \nLaenge: %d\nBits: %d",breite, hoehe ,bits);
    
     
        return 0;
    
    }


  • @Swordfish sagte in Bitmap-Bilder einlesen, bearbeiten und erzeugen:

    Aufmachen neuen Thread nächstes Mal mit deiner Frage du solltest.

    Was war daran unverständlitsch? @Mods: Close please.

    Deine Frage hat nichts mit diesem Thread zu tun.


Anmelden zum Antworten