diff --git a/Startcode/imageInput.c b/Startcode/imageInput.c index bd8f15a..bb30de1 100644 --- a/Startcode/imageInput.c +++ b/Startcode/imageInput.c @@ -6,119 +6,14 @@ #define BUFFER_SIZE 100 #define FILE_HEADER_STRING "__info2_image_file_format__" - // TODO Implementieren Sie geeignete Hilfsfunktionen für das Lesen der Bildserie aus einer Datei // TODO Vervollständigen Sie die Funktion readImages unter Benutzung Ihrer Hilfsfunktionen -static int checkFileHeader(FILE *file) -{ - char buffer[BUFFER_SIZE] = {0}; - - size_t length = strlen(FILE_HEADER_STRING); - - if (length >= BUFFER_SIZE) - { - return 0; - } - - if (fread(buffer, 1, length, file) != length) - { - return 0; - } - - return strcmp(buffer, FILE_HEADER_STRING) == 0; -} GrayScaleImageSeries *readImages(const char *path) { - -FILE *file = fopen(path, "rb"); - -if (file == NULL) { - return NULL; -} -if (!checkFileHeader(file)) -{ - fclose(file); - return NULL; -} -unsigned short numberOfImages; -unsigned short width; -unsigned short height; -if (fread(&numberOfImages, sizeof(unsigned short), 1, file) != 1 || - fread(&width, sizeof(unsigned short), 1, file) != 1 || - fread(&height, sizeof(unsigned short), 1, file) != 1) -{ - fclose(file); - return NULL; -} -if (numberOfImages == 0 || width == 0 || height == 0) -{ - fclose(file); - return NULL; -} -GrayScaleImageSeries *series = - calloc(1, sizeof(GrayScaleImageSeries)); - - -if (series == NULL) -{ - fclose(file); - return NULL; -} - -series->count = numberOfImages; -series->images = - calloc(numberOfImages, sizeof(GrayScaleImage)); - -series->labels = - calloc(numberOfImages, sizeof(unsigned char)); - if (series->images == NULL || series->labels == NULL) -{ - clearSeries(series); - fclose(file); - return NULL; -} -for (unsigned int i = 0; i < numberOfImages; i++) -{ - GrayScaleImage *image = &series->images[i]; - - image->width = width; - image->height = height; - - image->buffer = malloc( - (size_t)width * height * sizeof(GrayScalePixelType) - ); - - if (image->buffer == NULL) - { - clearSeries(series); - fclose(file); - return NULL; - } - - if (fread(image->buffer, - sizeof(GrayScalePixelType), - (size_t)width * height, - file) != (size_t)width * height) - { - clearSeries(series); - fclose(file); - return NULL; - } - - if (fread(&series->labels[i], - sizeof(unsigned char), - 1, - file) != 1) - { - clearSeries(series); - fclose(file); - return NULL; - } -} -fclose(file); -return series; - + GrayScaleImageSeries *series = NULL; + + return series; } // TODO Vervollständigen Sie die Funktion clearSeries, welche eine Bildserie vollständig aus dem Speicher freigibt