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 :

reconnaitre une image de fomat .ppm en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Par défaut reconnaitre une image de fomat .ppm en C
    Bonjour,

    Mon problème est le suivant! Je viens de terminer mon projet maintenat avec toutes les fonctions! J'aimerais quand meme améliorer mon programme encore mieux! Mon programme est programmé de telle facon et c'est le but qu'il ne travaille que avec des images format .ppm! Alors pour cela j'aimerais pouvoir controler l'orsque l'utilisateur entre un nom de fichier à ouvrir que ma fonction puisse reconaitre non selement si le fichier existe mais galement si le format correspond car comme ca elle seras surtout utile à la sauvegarde l'orsque l'utilisateur donnera un nouveau nom de fichier dans lequel sous lequel il sera sauvegardé! Et si il se trompe pour écrire .ppm alors il y auaas un message d'erreur!

    Voici ce que j'ai à présent mais cela est très faible!

    if ((fp = fopen(nom_Fichier_ouverture, "r")) == NULL)
    {
    printf("Erreur a l'ouverture de l'image ...\n");
    exit(-1);
    }
    else
    printf("Image ouverte avec succes ...\n");

    Comme vous le voyez dans ce cas si le format serais faux il y aura quand meme un message d'erreur mais pour la sauvegarde ce système ne marche pas car un nouveau fichier doit etre créer et alors le format entré au clavier n'est pas controlé avec cette méthode! Sauriez vous m'aidez svp? MERCI

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 86
    Par défaut
    Citation Envoyé par specification
    Each PPM image consists of the following:

    1. A "magic number" for identifying the file type. A ppm image's magic number is the two characters "P6".
    tu récupere les deux premiers octets
    si il sont différents de P6 erreur

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Fao,
    Citation Envoyé par scriptoff
    tu récupere les deux premiers octets
    si il sont différents de P6 erreur
    Et s'ils sont égaux à P6, il y a une chance pour que ce soit le bon format. Une chance seulement, pas une certitude.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 86
    Par défaut
    Citation Envoyé par droggo
    Fao,

    Et s'ils sont égaux à P6, il y a une chance pour que ce soit le bon format. Une chance seulement, pas une certitude.
    Ta remarque est intèressante mais ne correspond pas à ce qu'il demande , enfin je crois .
    Ainsi il demande seulement si l'utilisateur en cas de mauvaise saisie vérifie juste si cela pourrait corresponde a un fichier .ppm .
    En aucun cas il a demandé de traiter le cas ou le fichier est abimé .

    Et si il se trompe pour écrire .ppm alors il y auaas un message d'erreur!

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 86
    Par défaut
    500 OOPS
    desolé , double poste

  6. #6
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 21
    Par défaut rebonjour :)
    MERCI beaucoup à tous! Alors ce que vous avez fait souviron34 est fabuleux! Il y a juste un problème encore! :S Je sais je suis un sacré cas mais nous en cours on a pas encore vu les malloc et je ne comprends pas ce système! N0existe t'il pas une autre méthode peut etre?

    Car cela: p0 = malloc ( (strlen(nom_Fichier_ouverture)+4+1) );

    je ne comprends pas du tout!

    Ou si vous ne voyez pas d'autresméthodes sauriez vous me donner des explications suivantes?

    Et que veut dire strrchr?

    Est -e que signifie que l'on cherce un string?

    [-mod- merci de ne pas ecorcher les pseudos... Corrigé]

  7. #7
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Luo,
    Citation Envoyé par scriptoff
    Ta remarque est intèressante mais ne correspond pas à ce qu'il demande , enfin je crois .
    Ainsi il demande seulement si l'utilisateur en cas de mauvaise saisie vérifie juste si cela pourrait corresponde a un fichier .ppm .
    En aucun cas il a demandé de traiter le cas ou le fichier est abimé .
    Je n'ai pas parlé de fichier abimé ou pas.

    Rien n'interdit qu'un fichier n'ayant rien à voir avec le format désiré commence par les 2 caractères P6, alors que ton message prenait cela comme une preuve de validité.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 86
    Par défaut
    Citation Envoyé par droggo
    Luo,

    Je n'ai pas parlé de fichier abimé ou pas.

    Rien n'interdit qu'un fichier n'ayant rien à voir avec le format désiré commence par les 2 caractères P6, alors que ton message prenait cela comme une preuve de validité.

    Comme dirais mon prof de math :
    "c'est bon , je ferme ma gueule ".

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    si c'est l'extension du nom que tu veux vérifier, c'est simple :


    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    #include <string.h>
     
    .....
     
    char *p=NULL ;
    char *p0 =NULL ;
     
    ....
     
    /* Cherche si il y a une extension déjà dans le nom */
     
    p = strrchr ( nom_Fichier_ouverture, '.' );  
     
     
    /* Si il n'y en a pas, on doit allouer de la place pour copier le nom et ajouter l'extension */
     
    if ( p == NULL )
      { 
          p0 = malloc ( (strlen(nom_Fichier_ouverture)+4+1) ); /* 4 pour l'extension, 1 pour le caractère de fin de chaine */
          if ( p0 != NULL )
            {
               sprintf ( p0, "%s.ppm", nom_Fichier_ouverture );
     
                /* Met le pointeur comme étant le début du nom */
                p = p0 ;
            }
      }
    /* Si l'extension existait, vérifie qu'il n'y ait pas de fautes */
    else
      {
          if ( strlen(p) >= 4 ) /* Si il y a au moins 4 caractères */
            {
                if ( strcmp ( p, ".ppm" ) != 0 )  /* Si ce n'est pas la bonne */
                    strcpy ( p, ".ppm" );
     
                /* Met le pointeur comme étant le début du nom */
                p = nom_Fichier_ouverture ;
            }
          else
            {
                /* L'extension est trop courte, il faut allouer de nouveau */
     
                p0 = malloc ( (strlen(nom_Fichier_ouverture)+4+1) ); 
                if ( p0 != NULL )
                  {
                      sprintf ( p0, "%s.ppm", nom_Fichier_ouverture );
     
     
                     /* Met le pointeur comme étant le début du nom */
                      p = p0 ;
                  }
            }
      }
     
    /* Maintenant on est prêt, on a un nom de fichier complet, indiqué par p  */
     
    if ( p != NULL )
      {
    .............
     
         /* On libèrera la mémoire une fois qu'on a fini, si on est passé par une allocation */
     
         if ( p == p0 )
           {
              free(p0);
              p0 = NULL ;
           }
      }

Discussions similaires

  1. Reconnaitre une image dans une photo
    Par Mastard69 dans le forum OpenCV
    Réponses: 1
    Dernier message: 30/12/2013, 18h05
  2. Reconnaitre une image
    Par punisher999 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 14/05/2008, 10h45
  3. reconnaitre une forme dans une image
    Par ralf91 dans le forum C#
    Réponses: 7
    Dernier message: 03/04/2008, 20h31
  4. suppression de commentaire d'une image ppm
    Par Rniamo dans le forum C
    Réponses: 11
    Dernier message: 09/06/2007, 18h50
  5. Lecture d'une image ppm
    Par maestro128 dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 26/02/2007, 22h50

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