From eb833bc0c3ac4ce389a1bf6faadec87f9f272f4d Mon Sep 17 00:00:00 2001 From: Thomas Rauh Desktop Date: Wed, 12 Nov 2025 18:10:04 +0100 Subject: [PATCH] imageInput Header und einlese Anpassung --- imageInput.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/imageInput.c b/imageInput.c index 3caa626..a50bb92 100644 --- a/imageInput.c +++ b/imageInput.c @@ -7,7 +7,7 @@ #define FILE_HEADER_STRING "__info2_image_file_format__" // TODO Implementieren Sie geeignete Hilfsfunktionen für das Lesen der Bildserie aus einer Datei -static void einzelBild(unsigned char *ausgelesen, FILE *file, GrayScaleImageSeries *series, unsigned short int breite, unsigned short int hoehe, unsigned char bildnummer){ +static void einzelBild(char *ausgelesen, FILE *file, GrayScaleImageSeries *series, unsigned short int breite, unsigned short int hoehe, unsigned char bildnummer){ GrayScaleImage bild; bild.height = hoehe; bild.width = breite; @@ -28,10 +28,10 @@ static void einzelBild(unsigned char *ausgelesen, FILE *file, GrayScaleImageSeri GrayScaleImageSeries *readImages(const char *path) { GrayScaleImageSeries *series = NULL; - FILE *file; + FILE *file = NULL; unsigned short int breite; unsigned short int hoehe; - unsigned char *ausgelesen; + char *ausgelesen = NULL; ausgelesen = malloc(sizeof(char)*BUFFER_SIZE); @@ -41,6 +41,15 @@ GrayScaleImageSeries *readImages(const char *path) fclose(file); return series; } + + fread(ausgelesen,sizeof(char), strlen(FILE_HEADER_STRING), file); + + if(strcmp(ausgelesen,FILE_HEADER_STRING)!=0){ + printf("Kein richtiger File-Header vorhanden\n"); + fclose(file); + return series; + } + fseek(file,(sizeof(unsigned char)*strlen(FILE_HEADER_STRING)), SEEK_SET); //Lese Offset um Fileheader if(fread(ausgelesen,sizeof(unsigned short), 3, file)==3){ //restliche ersete Zeile lesen @@ -53,6 +62,8 @@ GrayScaleImageSeries *readImages(const char *path) } + ausgelesen = (char *)realloc(ausgelesen,sizeof(GrayScalePixelType)*hoehe*breite); //Speicheranpassung für Einlese-Buffer + for(int bildnummer=0; bildnummer count;bildnummer++){ einzelBild(ausgelesen, file, series, breite, hoehe, bildnummer); }