// // Created by Alban on 25/11/2024. // #include "convertion_MMD_PNG.h" // Fonction pour vérifier si un dossier existe, sinon le créer void ensure_directory_exists(const char *dir_path) { struct stat st = {0}; if (stat(dir_path, &st) == -1) { if (mkdir(dir_path) == 0) { printf("Dossier cree : %s\n", dir_path); } else { perror("Erreur lors de la creation du dossier"); exit(EXIT_FAILURE); } } } // Fonction pour vérifier si une extension est ".mmd" int has_mmd_extension(const char *filename) { const char *dot = strrchr(filename, '.'); return dot && strcmp(dot, ".mmd") == 0; } // Fonction pour extraire le nom de fichier sans répertoire ni extension void get_filename_without_extension(const char *path, char *output) { const char *base = strrchr(path, '/'); base = (base) ? base + 1 : path; char filename[256]; snprintf(filename, sizeof(filename), "%s", base); char *dot = strrchr(filename, '.'); if (dot) { *dot = '\0'; // Retirer l'extension } snprintf(output, 256, "%s", filename); } // Fonction pour construire une commande pour mmdc void convert_to_png(const char *input_file, const char *output_file) { char command[1024]; snprintf(command, sizeof(command), "mmdc -i \"%s\" -o \"%s\" > NUL 2>&1", input_file, output_file); int result = system(command);//la ligne du dessus empeche le printf produit par system avec > NUL 2>&1 if (result != 0) { fprintf(stderr, "Erreur lors de la conversion de %s\n", input_file); } else { printf("Fichier converti : %s\n", output_file); } } // Fonction principale : Convertir un fichier spécifique void convertion_mmd_png(nom_fichier_extension * nomFichierExtension) { // Vérifier si le fichier a l'extension .mmd if (!has_mmd_extension(nomFichierExtension->nom_fichier_mmd)) { fprintf(stderr, "Erreur : Le fichier %s n'a pas l'extension .mmd\n", nomFichierExtension->nom_fichier_mmd); } // Assurez-vous que le dossier IMG existe ensure_directory_exists(IMG_DIR); // Vérifier si le fichier d'entrée existe struct stat st; if (stat(nomFichierExtension->nom_fichier_mmd, &st) != 0) { perror("Erreur : Le fichier specifié est introuvable"); } // Extraire le nom du fichier sans extension char output_filename[256]; get_filename_without_extension(nomFichierExtension->nom_fichier_mmd, output_filename); // Construire le chemin complet du fichier de sortie char* output_file=malloc(512*sizeof(char)); snprintf(output_file, 100*sizeof(output_file), "%s/%s.png", IMG_DIR, output_filename); // Convertir le fichier convert_to_png(nomFichierExtension->nom_fichier_mmd, output_file); printf("Conversion terminee pour le fichier : %s\n", nomFichierExtension->nom_fichier_mmd); strcpy(nomFichierExtension->nom_fichier_png, output_file); } void convertionPNGSimulation(){ ensure_directory_exists(IMG_DIR); struct stat st; if (stat("MMD/simulation.mmd", &st) != 0) { perror("Erreur : Le fichier specifié est introuvable"); } char output[256]; snprintf(output, 256, "%s", "IMG/simulation.png"); convert_to_png("MMD/simulation.mmd", output); }