Bildmanipulation - speicher der datei



  • Hallo leute

    zuerst mal folgendes bitte, hab eine neues Betriebssystem windows8, wollte hier code blocks starten und was ausführen, da kommt eine Meldung, Gnu gcc Compiler not found und das compilieren geht gar nicht, irgendwelche lösungen?

    ich hab ein folgendes Problem: Ich hab ein code in C,dass eine ppm-Datei im ASCII Format einliest, es anzeigt und die Farbwerte auf 10 rundet.

    meine frage, wie kann ich die Datei am ende noch abspeichern?

    #include <stdio.h>
    #include <string.h> // für strtok und weitere Stringfunktionen
    #include <stdlib.h> // für atoi, malloc, free, NULL und weitere Standardfunktionen

    /**
    * Diese Funktion öffnet eine Datei,
    * liest die Länge aus,
    * allokiert dementsprechend viel Speicher,
    * liest die ganze Datei ein
    * und schließt sie wieder.
    /
    char
    readFile(char* filename)
    {
    FILE* file;
    char* buffer;
    long size;

    file = fopen("Foto", "r");
    if (!file)
    return NULL;

    fseek(file, 0, SEEK_END); // gehe zum Dateiende
    size = ftell(file); // lese Position aus
    fseek(file, 0, SEEK_SET); // gehe wieder zum Dateianfang

    // Dynamisch Speicher allokieren ( + '\0' am Ende)
    buffer = (char*) malloc ( sizeof(char) * (size+1) );

    // Datei einlesen
    fread(buffer, 1, size, file);

    // String sauber mit Nullzeichen abschließen
    buffer[size] = '\0';

    // Datei schließen
    fclose(file);

    // Zeiger auf den Speicher zurückgeben
    return buffer;
    }

    char* saveFile(char* filename)
    {

    }

    /**
    * Programmeinsprungspunkt
    /
    int main(int argc, char
    argv[])
    {
    char* buffer = NULL;

    char* ptr;
    char delimiter[] = " \t\r\n"; // als Trennzeichen sind Leerzeichen, Tab, CR und LF erlaubt

    int height, width;
    int max;

    buffer = readFile("picture.ppm"); // ganze Datei als String einlesen
    if(buffer == NULL)
    return -1;

    printf("%s\n", buffer); // ganze Datei anzeigen

    ptr = strtok(buffer, delimiter); // Identifikation überspringen

    ptr = strtok(NULL, delimiter); // Hoehe einlesen
    height = atoi(ptr);

    ptr = strtok(NULL, delimiter); // Breite einlesen
    width = atoi(ptr);

    ptr = strtok(NULL, delimiter); // Maximalwert der Farbkomponenten einlesen
    max = atoi(ptr);
    printf("----------------\n");
    printf("Bildhoehe: %3i\n", height);
    printf("Bildbreite: %3i\n", width);
    printf("Maximalwert: %3i\n", max);
    printf("----------------\n\n");

    while((ptr = strtok(NULL, delimiter)))
    {
    int tmp;
    tmp = atoi(ptr); // in Integer umwandeln
    tmp = tmp - (tmp%10); // auf 10 Runden
    printf("%i ", tmp); // ausgeben
    }

    free(buffer); // Speicher wieder freigeben

    return 0;
    }



  • Wie wärs mit fprintf?

    Du solltest darüber nachdenken, ob du die Daten in ein binäres Format überführst und dann mit diesen Daten rechnest.
    Eine struct mit den Maßen und anderen Werte für da Bild wäre auch nicht schlecht.

    Im Augenblick hast du ja nur diesen ASCII-Text.

    Und nutze beim nächsten Post bitte die Code-Tags für die Programmzeilen.
    Code markieren und auf den C-Button unter dem 😡 klicken



  • Es gibt eine Download-Variante von CB mit integriertem gcc/g++-Compiler. Verwende diese.
    Bei der Installation wird zwar noch nach anderen auf deinem System existenten Compilern gesucht, aber der Default bleibt gcc.
    ...
    Was willst du anschließend speichern?
    Deine Textausgaben? Dann rufe einfach programm.exe > datei.txt auf.



  • DirkB schrieb:

    Und nutze beim nächsten Post bitte die Code-Tags für die Programmzeilen.
    Code markieren und auf den C-Button unter dem 😡 klicken

    Aha, Frustschwelle überschritten?
    Gibst du dich der Hoffnung hin, dass sich das jemals ändern wird, d.h. dass die Leute bevor sie hier rumposten irgendeine FAQ lesen oder die halbwegs intuitiven Buttons bzw. die Vorschau benutzen?



  • Wutz schrieb:

    Es gibt eine Download-Variante von CB mit integriertem gcc/g++-Compiler. Verwende diese.
    Bei der Installation wird zwar noch nach anderen auf deinem System existenten Compilern gesucht, aber der Default bleibt gcc.
    ...
    Was willst du anschließend speichern?
    Deine Textausgaben? Dann rufe einfach programm.exe > datei.txt auf.

    Zuerst mal danke für die interesse.
    Ich môchte das bild, das ich als ascii einlese und manipuliere auch als ascii dann in einem textdokument hineinspeichere



  • Wutz schrieb:

    Gibst du dich der Hoffnung hin, dass sich das jemals ändern wird, d.h. dass die Leute bevor sie hier rumposten irgendeine FAQ lesen oder die halbwegs intuitiven Buttons bzw. die Vorschau benutzen?

    Nö.
    Aber dann beim zweiten mal.

    Wenn man aufhört zu kämpfen hat, hat man schon verloren.

    Man könnte ja für Mitglieder unter 10-20 Postings und für Unregistrierte (mein Pech) die Vorschau zur Pflicht machen.


Anmelden zum Antworten