#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 // Lädt eine .info2-Datei und prüft, ob das Dateiformat korrekt ist FILE* openImageFile(const char* path) { FILE* imageFile = NULL; imageFile = fopen(path, "rb"); // Prüfe, ob die Datei mit dem richtigen String beginnt char *fileHeaderString = (char*)malloc(BUFFER_SIZE); fread(fileHeaderString, 1, (BUFFER_SIZE - 1), imageFile); if (strngncmp(fileHeaderString, FILE_HEADER_STRING, BUFFER_SIZE, 27)) { // Datei hat nicht das korrekte Format return NULL; } return imageFile; } // TODO Vervollständigen Sie die Funktion readImages unter Benutzung Ihrer Hilfsfunktionen GrayScaleImageSeries *readImages(const char *path) { GrayScaleImageSeries *series = NULL; // Datei laden FILE* imageFile = openImageFile(path); if (imageFile == NULL) { printf("Unbekannter Fehler"); return NULL; } // Springe in der Datei an die Stelle nach dem String am Beginn // Lies folgende Informationen aus der Datei aus: // 1) Anzahl der Bilder --> GreyScaleImageSeries.count // 2) Breite der Bilder --> width // 3) Höhe der Bilder --> height // labels = unsigned char-Array mit der Größe wie AnzahlBilder // Springe in der Datei an die Stelle nach den drei Zahlen // für jedes Bild gemäß GreyScaleImageSeries.count: // GreyScaleImage.width = width // GreyScaleImage.height = height // GreyScaleImageSeries.buffer = Pixelwerte // labels = Label des Bilds // Springe in der Datei an die Stelle nach dem i. Bild // GrayScaleImageSeries.labels = labels (mit strcpy) return series; } // TODO Vervollständigen Sie die Funktion clearSeries, welche eine Bildserie vollständig aus dem Speicher freigibt void clearSeries(GrayScaleImageSeries *series) { }