From dadcdc873d2f5a6a9403593adb3bba5f5c6e1bdf Mon Sep 17 00:00:00 2001 From: Simon May Date: Tue, 11 Nov 2025 15:58:53 +0100 Subject: [PATCH] pass --- imageInput.c | 57 ++++++++++++++++++++++++++-------------------------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/imageInput.c b/imageInput.c index 6df604d..fb6c144 100644 --- a/imageInput.c +++ b/imageInput.c @@ -11,23 +11,20 @@ // TODO Vervollständigen Sie die Funktion readImages unter Benutzung Ihrer Hilfsfunktionen GrayScaleImageSeries *readImages(const char *path) { - // GrayScaleImageSeries *series = NULL; - - // return series; - FILE *file = fopen(path, "rb"); - if (file == NULL) { - return NULL; // Datei existiert nicht oder konnte nicht geöffnet werden + if (file == NULL) + { + return NULL; } - // Überprüfe den Dateitag - char fileTag[25]; - fread(fileTag, sizeof(fileTag[0]), 24, file); - fileTag[24] = '\0'; // Null-Terminierung des Strings + // Überprüfe den Header + char fileTag[strlen(FILE_HEADER_STRING)]; + fread(fileTag, sizeof(fileTag[0]), strlen(FILE_HEADER_STRING), file); - if (strcmp(fileTag, "__info2_image_file_format__") != 0) { + if (strcmp(fileTag, FILE_HEADER_STRING) != 0) + { fclose(file); - return NULL; // Ungültiges Dateiformat + return NULL; } // Lese die Metadaten: Anzahl der Bilder, Breite und Höhe @@ -36,32 +33,34 @@ GrayScaleImageSeries *readImages(const char *path) fread(&width, sizeof(width), 1, file); fread(&height, sizeof(height), 1, file); - // Speicher für die Bildserie und die Bilddaten allozieren GrayScaleImageSeries *series = (GrayScaleImageSeries *)malloc(sizeof(GrayScaleImageSeries)); - if (series == NULL) { + if (series == NULL) + { fclose(file); - return NULL; // Speicher konnte nicht allokiert werden + return NULL; } series->count = numberOfImages; series->images = (GrayScaleImage *)malloc(numberOfImages * sizeof(GrayScaleImage)); series->labels = (unsigned char *)malloc(numberOfImages * sizeof(unsigned char)); - if (series->images == NULL || series->labels == NULL) { + if (series->images == NULL || series->labels == NULL) + { free(series); fclose(file); - return NULL; // Speicher konnte nicht allokiert werden + return NULL; } - // Lese die Bilddaten und die Labels - for (int i = 0; i < numberOfImages; i++) { + for (int i = 0; i < numberOfImages; i++) + { series->images[i].width = width; series->images[i].height = height; series->images[i].buffer = (GrayScalePixelType *)malloc(width * height * sizeof(GrayScalePixelType)); - if (series->images[i].buffer == NULL) { - // Fehlerbehandlung: Speicher freigeben, wenn Allocation fehlschlägt - for (int j = 0; j < i; j++) + if (series->images[i].buffer == NULL) + { + // Fehlerbehandlung: Speicher freigeben, wenn malloc fehlschlägt + for (int j = 0; j < i; j++) { free(series->images[j].buffer); } @@ -84,13 +83,15 @@ GrayScaleImageSeries *readImages(const char *path) // TODO Vervollständigen Sie die Funktion clearSeries, welche eine Bildserie vollständig aus dem Speicher freigibt void clearSeries(GrayScaleImageSeries *series) { - if (series == NULL) return; + if (series == NULL) + return; - for (int i = 0; i < series->count; i++) { - free(series->images[i].buffer); // Speicher für das Bild freigeben + for (int i = 0; i < series->count; i++) + { + free(series->images[i].buffer); // Speicher für das Bild freigeben } - free(series->images); // Speicher für die Bild-Array freigeben - free(series->labels); // Speicher für die Labels freigeben - free(series); + free(series->images); // Speicher für die Bild-Array freigeben + free(series->labels); // Speicher für die Labels freigeben + free(series); } \ No newline at end of file