From e9dec069090c2ac55fa06c7853e8770dfc04ee8e Mon Sep 17 00:00:00 2001 From: "dietrichsi98865@th-nuernberg.de" Date: Thu, 27 Nov 2025 12:20:24 +0100 Subject: [PATCH] Bisschen weiter --- imageInput.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/imageInput.c b/imageInput.c index bb30de1..6b59a67 100644 --- a/imageInput.c +++ b/imageInput.c @@ -11,12 +11,63 @@ // TODO Vervollständigen Sie die Funktion readImages unter Benutzung Ihrer Hilfsfunktionen GrayScaleImageSeries *readImages(const char *path) { - GrayScaleImageSeries *series = NULL; - + FILE *file = fopen(path, "rb"); + if (!file) return NULL; + + fseek(file, strlen("__info2_image_file_format__"), SEEK_SET); + + unsigned short anzahlBilder, width, height; + fread(&anzahlBilder, sizeof(unsigned short), 1, file); + fread(&width, sizeof(unsigned short), 1, file); + fread(&height, sizeof(unsigned short), 1, file); + + GrayScaleImageSeries *series = malloc(sizeof(GrayScaleImageSeries)); + if (!series) { + fclose(file); + return 0; + } + + series->count = anzahlBilder; + series->images = malloc(sizeof(GrayScaleImage) * anzahlBilder); + series->labels = malloc(sizeof(unsigned char) * anzahlBilder); + + int pixelCount = width * height; + + for (unsigned int i = 0; i < anzahlBilder; i++) + { + series->images[i].width = width; + series->images[i].height = height; + series->images[i].buffer = malloc(pixelCount); + + fread(series->images[i].buffer, 1, pixelCount, file); + fread(&series->labels[i], 1, 1, file); + } + + fclose(file); return series; } + // TODO Vervollständigen Sie die Funktion clearSeries, welche eine Bildserie vollständig aus dem Speicher freigibt void clearSeries(GrayScaleImageSeries *series) { -} \ No newline at end of file + if (series == NULL) + return 0; + + + for (unsigned int i = 0; i < series->count; i++) + { + free(series->images[i].buffer); + series->images[i].buffer = NULL; + } + + + free(series->images); + free(series->labels); + + series->images = NULL; + series->labels = NULL; + + + free(series); +}