Formatierung des Codes

This commit is contained in:
AD005\z004z3ez 2025-11-20 09:16:46 +01:00
parent 8481f50f70
commit 952555f162

View File

@ -8,20 +8,26 @@
#define HEADER_LEN (sizeof(FILE_HEADER_STRING) - 1) //-1, um \0 Character rauszufiltern #define HEADER_LEN (sizeof(FILE_HEADER_STRING) - 1) //-1, um \0 Character rauszufiltern
// TODO Implementieren Sie geeignete Hilfsfunktionen für das Lesen der Bildserie aus einer Datei // TODO Implementieren Sie geeignete Hilfsfunktionen für das Lesen der Bildserie aus einer Datei
static int checkDimensions(unsigned int width, unsigned int height){
static FILE *openImageFile(const char *path)
int ok = 0; {
return fopen(path, "rb");
if(width > 0 && height > 0)
return ok = 1;
else
return ok = 0;
} }
static int checkHeader(const GrayScalePixelType *buffer){ static int ReadCheckHeader(FILE *fp, GrayScalePixelType *header)
{
if(fread(header, sizeof(GrayScalePixelType), HEADER_LEN, fp) != HEADER_LEN)
{
return 0;
}
return 1;
}
static int checkHeader(const GrayScalePixelType *buffer)
{
int ok = 0; int ok = 0;
char header[HEADER_LEN + 1]; //Array mit Platz für Header Länge + \0 Character -> String char header[HEADER_LEN + 1]; //Array mit Platz für Header Länge + \0 Character -> String
@ -42,23 +48,7 @@ static int checkHeader(const GrayScalePixelType *buffer){
return ok = 0; return ok = 0;
} }
static FILE *openImageFile(const char *path)
{
return fopen(path, "rb");
}
static int ReadCheckHeader(FILE *fp, GrayScalePixelType *header)
{
if(fread(header, sizeof(GrayScalePixelType), HEADER_LEN, fp) != HEADER_LEN)
{
return 0;
}
return 1;
}
static int readMetaData(FILE *fp, unsigned short *numImages, unsigned short *width, unsigned short *height) static int readMetaData(FILE *fp, unsigned short *numImages, unsigned short *width, unsigned short *height)
{ {
if(fread(numImages, sizeof(unsigned short), 1, fp) != 1 || fread(width, sizeof(unsigned short), 1, fp) != 1 || fread(height, sizeof(unsigned short), 1, fp)!= 1) if(fread(numImages, sizeof(unsigned short), 1, fp) != 1 || fread(width, sizeof(unsigned short), 1, fp) != 1 || fread(height, sizeof(unsigned short), 1, fp)!= 1)
@ -68,12 +58,28 @@ static int readMetaData(FILE *fp, unsigned short *numImages, unsigned short *wid
return 1; return 1;
} }
static int checkDimensions(unsigned int width, unsigned int height)
{
int ok = 0;
if(width > 0 && height > 0)
return ok = 1;
else
return ok = 0;
}
static GrayScaleImageSeries *allocateSeriesStruct(void) static GrayScaleImageSeries *allocateSeriesStruct(void)
{ {
GrayScaleImageSeries *series = malloc(sizeof(GrayScaleImageSeries)); GrayScaleImageSeries *series = malloc(sizeof(GrayScaleImageSeries));
return series; return series;
} }
static int AllocateCheckImageAndLabels(GrayScaleImageSeries *series, unsigned int numImages) static int AllocateCheckImageAndLabels(GrayScaleImageSeries *series, unsigned int numImages)
{ {
@ -94,6 +100,7 @@ static int AllocateCheckImageAndLabels(GrayScaleImageSeries *series, unsigned in
return 1; return 1;
} }
static int AllocateCheckPixelData(GrayScaleImageSeries *series, unsigned int numImages, unsigned int width, unsigned int height) static int AllocateCheckPixelData(GrayScaleImageSeries *series, unsigned int numImages, unsigned int width, unsigned int height)
{ {
@ -118,6 +125,7 @@ static int AllocateCheckPixelData(GrayScaleImageSeries *series, unsigned int num
return 1; return 1;
} }
static int ReadImagesAndLabels(FILE *fp, GrayScaleImageSeries *series, unsigned int numImages, unsigned int width, unsigned int height) static int ReadImagesAndLabels(FILE *fp, GrayScaleImageSeries *series, unsigned int numImages, unsigned int width, unsigned int height)
{ {
@ -145,14 +153,7 @@ static int ReadImagesAndLabels(FILE *fp, GrayScaleImageSeries *series, unsigned
return 1; return 1;
} }
// TODO Vervollständigen Sie die Funktion readImages unter Benutzung Ihrer Hilfsfunktionen // TODO Vervollständigen Sie die Funktion readImages unter Benutzung Ihrer Hilfsfunktionen
GrayScaleImageSeries *readImages(const char *path) GrayScaleImageSeries *readImages(const char *path)
{ {
@ -168,44 +169,57 @@ GrayScaleImageSeries *readImages(const char *path)
//Prüfen, ob genau die HEADER_LEN Bytes eingelesen werden //Prüfen, ob genau die HEADER_LEN Bytes eingelesen werden
if(!ReadCheckHeader(fp, header)){ if(!ReadCheckHeader(fp, header)){
fclose(fp); fclose(fp);
return NULL; return NULL;
} }
//Prüfen, ob es sich um den korrekten Header handelt mit Hilfsfunktion //Prüfen, ob es sich um den korrekten Header handelt mit Hilfsfunktion
if(!checkHeader(header)){ if(!checkHeader(header)){
fclose(fp); fclose(fp);
return NULL; return NULL;
} }
//Anzahl der Bilder, Breite und Höhe einlesen //Anzahl der Bilder, Breite und Höhe einlesen
unsigned short numImages, width, height; //muss man das als Zeiger initialisieren????????? unsigned short numImages, width, height;
if(!readMetaData(fp, &numImages, &width, &height)){ if(!readMetaData(fp, &numImages, &width, &height)){
fclose(fp); fclose(fp);
return NULL; return NULL;
} }
//Prüfen, ob gültige Länge oder Breite //Prüfen, ob gültige Länge oder Breite
if(!checkDimensions(width, height)){ if(!checkDimensions(width, height)){
fclose(fp); fclose(fp);
return NULL; return NULL;
} }
//Speicher für die gesamte Bildserie reservieren (aber nur für die Struktur) //Speicher für die gesamte Bildserie reservieren (aber nur für die Struktur)
series = allocateSeriesStruct(); series = allocateSeriesStruct();
if(!series) { if(!series) {
fclose(fp); fclose(fp);
return NULL; //Fehler bei Speicherreservierung return NULL; //Fehler bei Speicherreservierung
} }
//Speicher für die Bild-Struktur und Label-Array reservieren und prüfen
if(!AllocateCheckImageAndLabels(series, numImages)){ if(!AllocateCheckImageAndLabels(series, numImages)){
fclose(fp); fclose(fp);
return NULL; return NULL;
} }
//Speicher für die Pixeldaten selbst reserviern und Prüfen, ob er reserviert werden konnte //Speicher für die Pixeldaten selbst reserviern und prüfen, ob er reserviert werden konnte
if(!AllocateCheckPixelData(series, numImages, width, height)){ if(!AllocateCheckPixelData(series, numImages, width, height)){
fclose(fp); fclose(fp);
@ -213,10 +227,12 @@ GrayScaleImageSeries *readImages(const char *path)
} }
//Einlesen der Pixeldaten und des zugehörigen Labels und prüfen auf Fehler
if(!ReadImagesAndLabels(fp, series, numImages, width, height)){ if(!ReadImagesAndLabels(fp, series, numImages, width, height)){
fclose(fp); fclose(fp);
return NULL; return NULL;
} }
fclose(fp); fclose(fp);