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
// TODO Implementieren Sie geeignete Hilfsfunktionen für das Lesen der Bildserie aus einer Datei
static int checkDimensions(unsigned int width, unsigned int height){
int ok = 0;
static FILE *openImageFile(const char *path)
{
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;
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;
}
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)
{
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;
}
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)
{
GrayScaleImageSeries *series = malloc(sizeof(GrayScaleImageSeries));
return series;
}
static int AllocateCheckImageAndLabels(GrayScaleImageSeries *series, unsigned int numImages)
{
@ -94,6 +100,7 @@ static int AllocateCheckImageAndLabels(GrayScaleImageSeries *series, unsigned in
return 1;
}
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;
}
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;
}
// TODO Vervollständigen Sie die Funktion readImages unter Benutzung Ihrer Hilfsfunktionen
GrayScaleImageSeries *readImages(const char *path)
{
@ -168,44 +169,57 @@ GrayScaleImageSeries *readImages(const char *path)
//Prüfen, ob genau die HEADER_LEN Bytes eingelesen werden
if(!ReadCheckHeader(fp, header)){
fclose(fp);
return NULL;
}
//Prüfen, ob es sich um den korrekten Header handelt mit Hilfsfunktion
if(!checkHeader(header)){
fclose(fp);
return NULL;
}
//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)){
fclose(fp);
return NULL;
}
//Prüfen, ob gültige Länge oder Breite
if(!checkDimensions(width, height)){
fclose(fp);
return NULL;
}
//Speicher für die gesamte Bildserie reservieren (aber nur für die Struktur)
series = allocateSeriesStruct();
if(!series) {
fclose(fp);
return NULL; //Fehler bei Speicherreservierung
}
//Speicher für die Bild-Struktur und Label-Array reservieren und prüfen
if(!AllocateCheckImageAndLabels(series, numImages)){
fclose(fp);
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)){
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)){
fclose(fp);
return NULL;
}
fclose(fp);