#include #include #include #include "imageInput.h" #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 Header_check(FILE *file) { char puffer[BUFFER_SIZE] = {0}; fread(puffer, sizeof (char), strlen(FILE_HEADER_STRING), file); if (!strcmp(puffer, FILE_HEADER_STRING)) { return 1; } return 0; } static int readDimensions(FILE *file, unsigned short werte[]) { size_t anzahl_gelesen = fread(werte, sizeof (unsigned short), 3, file); if (anzahl_gelesen == 3) { return 1; } return 0; } static GrayScaleImageSeries *createSeries(unsigned short anzahl){ GrayScaleImageSeries *series = (GrayScaleImageSeries *)malloc(sizeof(GrayScaleImageSeries)); if (series == NULL) { return NULL; } series->count = anzahl; series->labels = (unsigned char *)calloc(anzahl, sizeof(unsigned char)); if (series->labels == NULL) { free(series); return NULL; } series->images = (GrayScaleImage *)calloc(anzahl, sizeof(GrayScaleImage)); if (series->images == NULL) { free(series->labels); free(series); return NULL; } return series; } GrayScaleImageSeries *readImages(const char *path) { GrayScaleImageSeries *series = NULL; FILE *bilder = fopen(path, "rb"); if (bilder == NULL) { printf("Error opening file\n"); return NULL; } if (Header_check(bilder) == 0) { fclose(bilder); return NULL; } unsigned short werte[3]; if (readDimensions(bilder, werte) == 0) { fclose(bilder); return NULL; } series = createSeries(werte[0]); if (series == NULL) { fclose(bilder); return NULL; } return series; } // TODO Vervollständigen Sie die Funktion clearSeries, welche eine Bildserie vollständig aus dem Speicher freigibt void clearSeries(GrayScaleImageSeries *series) { }