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 erlaubtint 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 demklicken
-
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 demklicken
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.