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

Langages de programmation Discussion :

Information sur le format PPM


Sujet :

Langages de programmation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Par défaut Information sur le format PPM
    Bonjour, je dois realiser un programme ou j'ai besoin d'une fonction renvoyant un tableau de unsigned char contenant les infos sur les pixels d'une image au format PPM, hors je me pose une question ...

    comment sont rangés exactement ces pixels dans le fichier PPM ?? je m'explique, sont-ils alignés les uns apres les autres, ou bien sont ils rangés en fonction de leurs emplacement sur l'image ? La question implicite étant, si je veux lire tout les triplets d'octets du fichier pour les transmettre à un fonction graphique affichant un image au format PPM, dois-je les lire et les disposer les uns à la suite des autre dans le tableau à transmetre, ou dois-je les lire en créant un algorythme prenant en compte les dimension de l'image qui influerait sur le rangement des triplet RVB dans le fichier PPM ... bref je suis un peu perdu ...

    Je précise le projet est réalisé en C.

    PS :En pièce jointe une image de ce que j'ai réalisé pour l'instant ... l'image qui devrait étre affiché est celle dans gimp, vous remarquerez que celle affiché par mon programme juste au dessus n'a pas grand chose à voir ... peut être le visuel vous aidera à comprendre mon problème, je suppose qu'il vient de mon incompréhension sur le fichier PPM

    Merci pour votre aide, et désolé si le sujet à déjà été traité, mais même après avoir bien chercher je n'ai pas trouver de sujet correspondant à mon problème ...

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Je ne vois pas le problème, je suppose que tu as lu la spécification du format. Qu'est-ce que tu ne comprend pas là dedans ?

    --
    Jedaï

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Par défaut
    Oui j'ai lu la specification mais il doit y avoir quelquechose que je ne saisi pas bien dans la façon dont sont rangées les information RVB sur les pixels de le fichier ... je m'explique avec un image ( nouvelle pieces jointe) : j'ai crée une image blanche de dimension 5x5 avec des point de couleurs a chaque coté. L'image originale est celle de gauche , l'image ouverte ma mon programme est celle juste a droite ... vous remarquerez qu'il ce passe quelquechose de bizare ^^ qui doit surement venir de mon incomprehension du format PPM.

    Voici la portion de mon code qui est sensé lire le fichier PPM :


    Code c : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    unsigned char* openImage()
    {
    	unsigned char ligne[50]={'\0'};
    	unsigned char ligne2[50]={'\0'};
    	int k=0,c;
     
    	unsigned char* tabRVB = (unsigned char*) malloc((50)*(50)*3*sizeof(unsigned char));
    	if (tabRVB == NULL)
    			{
    			printf("Erreur d'allocation dans openImage\n");
    			exit(1);
    		   	}
     
     
    	FILE *fic=NULL;
    	if((fic=fopen("img5.ppm","r"))!=NULL)
    	{
     
    		printf("L'ouverture du fichier c'est bien éfféctué\n");
                   //Ici on saute l'entete du fichier.
    		fgets(ligne, 30, fic);
    		fgets(ligne2, 30, fic);
    		fgets(ligne2, 30, fic);
    		fgets(ligne2, 30, fic);
    		fgets(ligne2, 30, fic);
                  //Arrivé aux information sur les pixel:
    		while(EOF!=(c=fgetc(fic)))
    		{
    			tabRVB[k]=(unsigned char)(int)(c);
    			k++;			
    		}
     
    		if((fclose(fic)==0)) printf("La fermeture du fichier c'est bien passée\n");
    		else printf("problème de fermeture du fichier\n");
    	return tabRVB;
    	}
    	else printf("Problème d'ouverture du fichier\n");
     
    }


    Vous remarquerez que je lit le fichier d'un trait et que je met les infos sur les pixel dans le tableau RVB dans le même ordre ... est-ce la bonne marche à suivre ??

    ça va faire un bon ptit moment que je suis dessus ça comment à être agacent ... Merci d'avance à ceux qui m'aiderons ..
    Images attachées Images attachées  

  4. #4
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    voir l'exemple ppm dans wikipédia :http://en.wikipedia.org/wiki/Netpbm_...at_description

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Par défaut
    Ba j'ai lu ça , et il me semble que mon prog fait ce qu'il est sensé faire ... une question m'a traversé l'esprit, dans le cas d'un fichier PPM en brut ( binaire ) y a-t-il des espace entre les char codant les pixels ? parsque mon code ne prend pas en compte les espace ...

    Ou peut-etre y a-t-il un probleme dans type des variable ... le char lu par fgetc est enrgistré dans c, qui est un int, puis la case k du tableau tabRVB ( tableau d'unsigned int ) enregistre ce c ... n'y a-t-il pas possibilité qu'il y ait une erreur de typage pendant ce transfert ... comme par exemple que ce soit un int qui soit stoqué dans le tabRVB ... ça depasse mes connaissance au niveau du compilo je suis perdu :p

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Par défaut
    Vraiment personne pour m'aider? je m'en sort pas ça me bloque dans mon projet ...

Discussions similaires

  1. Demande d'information sur la formation oracle
    Par paco503 dans le forum Débuter
    Réponses: 5
    Dernier message: 27/12/2011, 11h10
  2. Projet SAP : information sur la formation ABAP
    Par ismail30 dans le forum SAP
    Réponses: 2
    Dernier message: 11/09/2011, 20h07
  3. Demande d'informations sur des formations pour le DIF.
    Par MenshaKaine dans le forum Emploi
    Réponses: 0
    Dernier message: 29/01/2010, 12h26
  4. demande d'information sur String.Format
    Par adel.87 dans le forum Débuter
    Réponses: 4
    Dernier message: 07/10/2008, 13h37
  5. Information sur les formats des dates
    Par Azharis dans le forum Access
    Réponses: 2
    Dernier message: 13/01/2006, 13h07

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