diff --git a/.idea/editor.xml b/.idea/editor.xml
index ec90224..25c6c37 100644
--- a/.idea/editor.xml
+++ b/.idea/editor.xml
@@ -243,5 +243,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/imageInput.c b/imageInput.c
index 9130942..fc222d3 100644
--- a/imageInput.c
+++ b/imageInput.c
@@ -12,10 +12,62 @@
GrayScaleImageSeries *readImages(const char *path)
{
GrayScaleImageSeries *series = NULL;
-
+
+ FILE *file = fopen(path, "rb");
+
+ if(file != NULL)
+ {
+ if(checkFileHeader(file))
+ {
+ unsigned int numberOfImages = readDimension(file);
+ unsigned short int width = readDimension(file);
+ unsigned short int height = readDimension(file);
+ series = (GrayScaleImageSeries *)malloc(sizeof(GrayScaleImageSeries));
+ series->images = (GrayScaleImage *)malloc(numberOfImages * sizeof(GrayScaleImage));
+ series->labels = (unsigned char *)malloc(numberOfImages * sizeof(unsigned char));
+ series->count = numberOfImages;
+ for(unsigned int i = 0; i < numberOfImages; i++)
+ {
+ series->images[i] = readImage(file);
+ series->labels[i] = readLabel(file);
+ }
+ fclose(file);
+ return series;
+ }
+ }
return series;
}
+
+bool checkFileHeader(FILE *file)
+{
+ char buffer[BUFFER_SIZE] = {0};
+ fread(buffer, sizeof(char), BUFFER_SIZE, file);
+ return strcmp(buffer, FILE_HEADER_STRING) == 0;
+}
+
+unsigned short int readDimension(FILE *file)
+{
+ unsigned short int dimension = 0;
+ fread(&dimension, sizeof(unsigned short int), 1, file);
+ return dimension;
+}
+
+GrayScaleImage readImage(FILE *file)
+{
+ GrayScaleImage image;
+ image.buffer = (GrayScalePixelType *)malloc(image.width * image.height * sizeof(GrayScalePixelType));
+ fread(image.buffer, sizeof(GrayScalePixelType), image.width * image.height, file);
+ return image;
+}
+
+unsigned char readLabel(FILE *file)
+{
+ unsigned char label = 0;
+ fread(&label, sizeof(unsigned char), 1, file);
+ return label;
+}
+
// TODO Vervollständigen Sie die Funktion clearSeries, welche eine Bildserie vollständig aus dem Speicher freigibt
void clearSeries(GrayScaleImageSeries *series)
{
diff --git a/imageInput.h b/imageInput.h
index 656e213..8a861bc 100644
--- a/imageInput.h
+++ b/imageInput.h
@@ -17,7 +17,12 @@ typedef struct
unsigned int count;
} GrayScaleImageSeries;
+
GrayScaleImageSeries *readImages(const char *path);
void clearSeries(GrayScaleImageSeries *series);
+bool checkFileHeader(FILE *file);
+unsigned short int readDimension(FILE *file);
+GrayScaleImage readImage(FILE *file);
+unsigned char readLabel(FILE *file);
#endif
diff --git a/testFile.info2 b/testFile.info2
new file mode 100644
index 0000000..1ea3b4c
--- /dev/null
+++ b/testFile.info2
@@ -0,0 +1 @@
+some_tag
\ No newline at end of file