Umsetzung von imageInput.c begonnen: FILE* openImageFile(const char* path) implementiert.
This commit is contained in:
@@ -7,12 +7,56 @@
|
||||
#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;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,12 +3,15 @@
|
||||
|
||||
typedef unsigned char GrayScalePixelType;
|
||||
|
||||
FILE* openImageFile(const char* path);
|
||||
|
||||
// Für die Verarbeitung muss dynamsiche Speicherverwaltung angewendet werden
|
||||
typedef struct
|
||||
{
|
||||
GrayScalePixelType *buffer;
|
||||
GrayScalePixelType *buffer; // Bytestream der ja Pixel die Graustufe als unsigned char angibt --> Je Pixel 8 Bit
|
||||
unsigned int width;
|
||||
unsigned int height;
|
||||
} GrayScaleImage;
|
||||
} GrayScaleImage; // Jedes Bild ist von der Logik her als Matrix gespeichert mit Höhe und Breite als Angabe für die Anzahl an Spalten und Reihen
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user