Bilddatei einlesen
-
hallo!
ich, anfänger, möchte ein programm schreiben in dem ich eine bilddatei einlese. ich hab schon mal eines geschrieben wo ich eine textdatei einlese. mein problem ist, dass ich nicht weiss wie ich an die daten im header (farbwerte, höhe, breite) der bilddatei (ppm) rankomme. ob man da auch die üblichen funktionen fgetf fscanf feof usw. verwenden darf?
wäre sehr froh, wenn mir da wer helfen könnte.
-
klar geht das mit fgetc und fread usw. du musst nur wissen wie die bilddatei aufgebaut ist und beim 'fopen' das 'binary-flag' setzen.
-
Ahh, binary flag, das schaut dann so aus:
char *filename;
FILE *stream;
stream=fopen(filename, 'rb');
?
und wenn ich den header lesen will, aber nicht weiss wie lang der is, wie find ich das heraus?
danke auf jedenfall schon mal für den tip!
-
Marla666 schrieb:
stream=fopen(filename, 'rb');
ja, das 'b' ist wichtig, nur muss es ein string sein (also "" und nicht '').
Marla666 schrieb:
und wenn ich den header lesen will, aber nicht weiss wie lang der is, wie find ich das heraus?
du musst das file format kennen. wenn der header variable längen hat, dann muss dein programm sich da durchparsen.
-
Ok, dann versuch ichs mal, danke!
-
Ich bin gerade an einem ähnlichen problem. Muss auch eine binäre Bilddatei einlesen. Und zwar habe ich den Code von hier: http://www.cplusplus.com/reference/clibrary/cstdio/fread.html verwendet um mein binäres File einzulesen. Wenn ich jetzt aber schaue, was ich eingelesen habe (also ich schaue mir mit einer schleife an was in buffer[i] steht) steht in meinem Speicher wieder genau das selbe wie in dem File, also etwas dass ich nicht lesen kann^^
Wie kann ich das was in dem Binärfile steht so rausbekommen, dass ich es verwenden kann??
Danke&mfg!!!
-
Zum Beispiel so, um einen unsigned int auszulesen:
unsigned int* buffer=(unsigned int*) malloc ( sizeof(unsigned int) ); fread (buffer, der Puffer, in den der Wert gespeichert wird. 1, 1 unsigned int auslesen sizeof(unsigned int), Lese sizeof(unsigned int) bytes pFile );
-
nach 3 min googeln:
http://local.wasp.uwa.edu.au/~pbourke/dataformats/ppm/
Da wird der Header genau erklärt...
Kannst also die Werte raus holen und verarbeiten.
-
warum nimmst du son olles format, das eh kaum einer benutz. wie wäres denn mit bmp format ?
-
Das is eine Aufgabe von der Uni, wo wir eine ppm in eine bmp verwandeln müßen, und ich nehme mal an dass hasenfuss hier denselben kurs wie ich besucht...
-
Marla666 schrieb:
Das is eine Aufgabe von der Uni, wo wir eine ppm in eine bmp verwandeln müßen, und ich nehme mal an dass hasenfuss hier denselben kurs wie ich besucht...
Jop da sind wir wohl wirklich im selben Kurs^^