From 12359f3ac564bc86c2699fc23e4ff3a84e87923c Mon Sep 17 00:00:00 2001 From: Hofmann Jonas Date: Thu, 13 Nov 2025 01:43:59 +0100 Subject: [PATCH] created support-Function 'readStatusInfo' --- imageInput.c | 45 +++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/imageInput.c b/imageInput.c index 05854f2..4346acd 100644 --- a/imageInput.c +++ b/imageInput.c @@ -11,36 +11,30 @@ // TODO Implementieren Sie geeignete Hilfsfunktionen für das Lesen der Bildserie aus einer Datei + +int readStatusInfo(FILE **source, char *const headerString, int *const imageCount, int *const imageWidth, int *const imageHeight, int const amountToRead); + + // TODO Vervollständigen Sie die Funktion readImages unter Benutzung Ihrer Hilfsfunktionen GrayScaleImageSeries *readImages(const char *path) { GrayScaleImageSeries *series = NULL; // selbst geschriebene Variablen - FILE *readSource; - int i = 0; - unsigned int numberOfBytesToRead = 0; - unsigned int amountOfStatusInfoToRead = 1; - char headerString[sizeof("__info2_image_file_format__")]; + FILE *readSource; + int i = 0; + unsigned int numberOfBytesToRead = 0; + const unsigned int amountOfStatusInfoToRead = 1; + char headerString[sizeof("__info2_image_file_format__")]; readSource = fopen(path, "rb"); + if (readSource != NULL) { - // dateiaufbau: - - // string __info2_image_file_format__ - fread(headerString, sizeof(headerString), amountOfStatusInfoToRead, readSource); - // INT - Anzahl der Bilder - fread(&(series->count), sizeof(series->count), amountOfStatusInfoToRead, readSource); - // INT - Breite eines Bildes (Pixel) - fread(&(series->images->width), sizeof(series->images->width), amountOfStatusInfoToRead, readSource); - // INT - Höhe eines Bildes (Pixel) - fread(&(series->images->height), sizeof(series->images->height), amountOfStatusInfoToRead, readSource); - // Bis hier alles nur einmal durchführen - - numberOfBytesToRead = (series->images->width) * (series->images->height); + numberOfBytesToRead = readStatusInfo(&readSource, headerString, &series->count, &series->images->width, &series->images->height, amountOfStatusInfoToRead); + // bufferspeicher anlegen der unsigned char pointer // mit anzahl der pixel als größe ist um dann // grauwerte in diesen buffer zu schreiben @@ -94,3 +88,18 @@ void clearSeries(GrayScaleImageSeries *series) series = NULL; } + +// reads string, pictureCount, pictureWidth, pictureHight +int readStatusInfo(FILE **source, char *const headerString, int *const imageCount, int *const imageWidth, int *const imageHeight, int const amountToRead) +{ + int bytesToRead = 0; + + fread(headerString, sizeof(*headerString), amountToRead, *source); + fread(imageCount, sizeof(*imageCount), amountToRead, *source); + fread(imageWidth, sizeof(*imageWidth), amountToRead, *source); + fread(imageHeight, sizeof(*imageHeight), amountToRead, *source); + + bytesToRead = (*imageWidth) * (*imageHeight); + + return bytesToRead; +}