IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

problème écriture fichier ppm


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Décembre 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Décembre 2022
    Messages : 7
    Par défaut problème écriture fichier ppm
    Bonjour ! Je suis actuellement en train de coder un interpréteur pour un petit langage graphique et l'idée est la suivante:

    On a un fichier par exemple test.ipi qui comporte 2 lignes : à la première ligne on a un nombre qui nous indique la taille de l'image à produire puis la deuxième ligne nous indique une série de lettre ex : asdlccfjfdhdb et chaque lettre va avoir un effet sur l'image.
    Donc finalement à partir de se fichier, on aimerait construire une image et renvoyer sur la sortie standard l'image correspondante au format PPM .

    On va raisonner avec des calques, un curseur et des pixels. On considère une pile qui peut contenir au max 10 calques et on va faire des choses avec ex: déplacer le curseur, fonction de remplissage, fusion de calque etc...

    Le calque est un tableau à 2 dimensions et qui contient des pixels.

    Maintenant que le contexte est posé ( j'espère que j'ai été assez clair ), je me retrouve face à un problème lorsque je veux écrire mon fichier PPM.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    void ppm_image(calque ca,char *chemin){
        FILE *f;
        f=fopen(chemin,"w");
        if(f==NULL){
            perror("[fopen]");
            exit(5);
        }
     
        // on écrit le format classique d'un fichier ppm
     
        fprintf(f,"P6\n%d %d\n255\n",ca.w,ca.h);  // ca.weidth et ca.height -> la largeur et la hauteur de mon calque
     
        fwrite(ca.tab,sizeof(pixel),ca.w*ca.h,f); // ca.tab = ca.tableaudepixel 
     
        fclose(f);
    }
    Quand je teste mon programme avec un calque noir, j'obtiens bien un fichier test.ppm mais quand je l'ouvre avec ImageMagick ça me met : insufficient image data in file ''là où se trouve mon fichier'' @ error/pnm.c/ReadPNMImage/443

    Et puis je ne suis même pas sur de mon fwrite pour écrire les couleurs dans mon fichier ppm, au final j'aimerai obtenir quelque chose du style:
    P6
    5 5
    255
    (0 0 0) (0 0 0) ( 0 0 0) ( 0 0 0) (0 0 0)
    (0 0 0) (0 0 0) ( 0 0 0) ( 0 0 0) (0 0 0)
    (0 0 0) (0 0 0) ( 0 0 0) ( 0 0 0) (0 0 0)
    (0 0 0) (0 0 0) ( 0 0 0) ( 0 0 0) (0 0 0)
    (0 0 0) (0 0 0) ( 0 0 0) ( 0 0 0) (0 0 0)

    mais je ne sais pas comment écrire les "(0 0 0) (0 0 0) ( 0 0 0) ( 0 0 0) (0 0 0)"
    (0 0 0) (0 0 0) ( 0 0 0) ( 0 0 0) (0 0 0)
    etc...

    j'ai pensé à initialiser un buffeur de unsigned char pour stocker chaque couleur de mes pixels
    Ou encore, j'ai aussi pensé à utiliser une double boucle for pour parcourir chaque pixel de mon calque et de les réécrires dans le fichier mais ça n'a pas marché .

    Désolé pour le dérangement et pour ce gros pavé !!
    Je vous remercie par avance.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2012
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2012
    Messages : 329
    Par défaut
    En général pour les manips d'images je passe par des librairies dédicacées... libppm par exemple.

    https://linux.die.net/man/3/libppm

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Décembre 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Décembre 2022
    Messages : 7
    Par défaut
    Je ne savais pas qu'il y'avait une libraire dédiée, merci ! Cependant, notre professeur nous impose sûrement d'écrire la procédure de creation de fichier à la main...

  4. #4
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 757

Discussions similaires

  1. Problème écriture fichier XML
    Par drake56 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/03/2010, 12h16
  2. [Vb.net] Probléme écriture fichier textes
    Par miabi dans le forum VB.NET
    Réponses: 4
    Dernier message: 08/10/2009, 17h36
  3. [strcat] Problème écriture fichier
    Par Newenda dans le forum MATLAB
    Réponses: 3
    Dernier message: 26/05/2009, 17h31
  4. Problème écriture fichier xml
    Par ludo24 dans le forum ASP
    Réponses: 23
    Dernier message: 23/06/2008, 11h48
  5. [Servlet] Probléme écriture fichier
    Par hedgehog dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 23/05/2005, 15h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo