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 :

Itérer un nom de fichier


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 23
    Points
    23
    Par défaut Itérer un nom de fichier
    Bonjour à tous, j'ai un petit soucis qui je pense sera vite résolu.
    Je développe plus en java qu'en C/C++ donc je galère sur quelques choses qui devraient pas être si compliqué que ca...

    Voici ma fonction :

    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
    //--------------------------------------------------------------------------------------------------
    // StreamCBFunc
    //--------------------------------------------------------------------------------------------------
    void CVCAVISampleDlg::StreamCBFunc(J_tIMAGE_INFO * pAqImageInfo)
    {
    	/* */
    	//LPCTSTR lpszFile = _T("capture.tiff");
    	LPCWSTR lpszFile = L"capture.bmp";
     
    	//char buf[30];
    	//sprintf(buf,"%llu.tiff",pAqImageInfo->iTimeStamp);
    	//LPCTSTR sFileName = (LPCTSTR)buf;
    	//uint64_t time = pAqImageInfo->iTimeStamp;
    	//TRACE("Timestamp = %llu\n", pAqImageInfo->iTimeStamp);
     
    	J_tIMAGE_INFO tCnvImageInfo; // Image info structure
    	// Allocate the buffer to hold converted the image
    	if (J_Image_Malloc(pAqImageInfo, &tCnvImageInfo) != J_ST_SUCCESS) { TRACE("Foireux 1\n"); }
    	// Convert the raw image to image format
    	if (J_Image_FromRawToImage(pAqImageInfo, &tCnvImageInfo) != J_ST_SUCCESS) { TRACE("Foireux 2\n"); }
    	// Save the image to disk in TIFF format
    	if (J_Image_SaveFileEx(&tCnvImageInfo, lpszFile, J_FF_BMP ) != J_ST_SUCCESS) { TRACE("Foireux 3\n"); }
    	//J_Image_SaveFile(&tCnvImageInfo, lpszFile) // Avec directement le format .tiff dans le nom du fichier
    	//J_FF_TIFF : TIFF file format.
    	//J_FF_JPEG : JPEG file format.
    	//J_FF_BMP :  BMP file format. 
    	// Free up the image buffer
    	if (J_Image_Free(&tCnvImageInfo) != J_ST_SUCCESS) { TRACE("Foireux 4\n"); }
    	//free(buf);
     
    	//TRACE("Announced buffer = %lu\n", pAqImageInfo->iAnnouncedBuffers); // 10
    	//TRACE("Await Delivery = %lu\n", pAqImageInfo->iAwaitDelivery); // 0
    	//TRACE("Image Size = %lu\n", pAqImageInfo->iImageSize);  // 1 997 376
    	TRACE("Timestamp = %llu\n", pAqImageInfo->iTimeStamp);
     
        // We can choose to display the image too, but this will only slow down the AVI file creation
        if(m_hView && (pAqImageInfo->iAwaitDelivery < 2))
        {
            // Shows image
            J_Image_ShowImage(m_hView, pAqImageInfo);
        }else{
    		TRACE("Ca galere !");
    	}
     
    }
    Voilà j'ai un thread qui m'envoie un flux de donnée J_tIMAGE_INFO * pAqImageInfo qui sont des données qui représentent une image.

    Et en fait j'aimerais juste sauvegarder mes images au fur et à mesure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    J_tIMAGE_INFO tCnvImageInfo; // Image info structure
    // Allocate the buffer to hold converted the image
    if (J_Image_Malloc(pAqImageInfo, &tCnvImageInfo) != J_ST_SUCCESS) { TRACE("Foireux 1\n"); }
    // Convert the raw image to image format
    if (J_Image_FromRawToImage(pAqImageInfo, &tCnvImageInfo) != J_ST_SUCCESS) { TRACE("Foireux 2\n"); }
    // Save the image to disk in TIFF format
    if (J_Image_SaveFileEx(&tCnvImageInfo, lpszFile, J_FF_BMP ) != J_ST_SUCCESS) { TRACE("Foireux 3\n"); }
    //J_Image_SaveFile(&tCnvImageInfo, lpszFile) // Avec directement le format .tiff dans le nom du fichier
    Cette partie fonctionne j'ai bien à chaque fois mon image enregistré (sauf que la évidemment je garde toujours le même nom donc je n'en ai qu'une...)

    Ce que j'aimerais c'est enregistré mes images avec le timestamp qui leur correspond (qui est donné par pAqImageInfo->iTimeStamp qui est un uint64_t)

    J'ai tenté ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //char buf[30];
    //sprintf(buf,"%llu.tiff",pAqImageInfo->iTimeStamp);
    //LPCTSTR sFileName = (LPCTSTR)buf;
    Mais j'avais plus rien

    Donc voilà si quelqu'un pouvait me dépanner ça serait cool.

    Infos supplémentaires
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    J_STATUS_TYPE J_Image_SaveFile(J_tIMAGE_INFO * pBufferInfo, LPCTSTR pPath);
    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
    typedef struct _J_tIMAGE_INFO_TYPE 
    {
       uint32_t iPixelType;          ///< Pixel Format Type
       uint32_t iSizeX;              ///< Image width
       uint32_t iSizeY;              ///< Image height
       uint32_t iImageSize;          ///< Number of bytes for image
       uint8_t  *pImageBuffer;       ///< Buffer pointer
       uint64_t iTimeStamp;          ///< Timestamp
       uint32_t iMissingPackets;     ///< Number of missing packets
       uint32_t iAnnouncedBuffers;   ///< Number of announced buffers
       uint32_t iQueuedBuffers;      ///< Number of queued buffers
       uint32_t iOffsetX;            ///< Image offset x
       uint32_t iOffsetY;            ///< Image offset y
       uint32_t iAwaitDelivery;      ///< Number of frames awaiting delivery inside the driver
       uint32_t iBlockId;            ///< GigE Vision Stream Protocol Block-ID
    } J_tIMAGE_INFO;

  2. #2
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 265
    Points : 6 686
    Points
    6 686
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    C/C++ ça ne veut rien dire. Ou alors, dans le sens où l'on dirait "je programme en C#/java". Ce sont 2 langages différents.
    Et de fait, ton code c'est du C, pas du C++, tu n'es donc pas sur le bon sous-forum.

  3. #3
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    Si par hasard tu utilises les MFC ou ATL tu peux utiliser la classe CString et sa méthode Format. Enfin ça vaut si ton problème réside dans la concaténation de chaine.

    Au passage tu devrais vérifier les datas de ta structure d'image ... une valeur non spécifiée (car parfois non demandée dans ton getter, car tu n'as pas mis la bonne option) peut parfois jouer bien des tours.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    Si par hasard tu utilises les MFC ou ATL tu peux utiliser la classe CString et sa méthode Format. Enfin ça vaut si ton problème réside dans la concaténation de chaine.
    C'est exactement ce que je voulais merci

    Voici le code au final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CString buf;
    J_tIMAGE_INFO tCnvImageInfo; // Image info structure
     
    buf.Format(_T("%llu.bmp"), pAqImageInfo->iTimeStamp);
    LPCTSTR lpszFile  = (LPCTSTR)buf;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment récupérer le nom du fichier sans l'extension ?
    Par altahir007 dans le forum Langage
    Réponses: 16
    Dernier message: 13/11/2009, 13h20
  2. Récupérer le nom du fichier spool correspondant à un job
    Par chtiot dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 23/02/2004, 20h28
  3. Réponses: 2
    Dernier message: 29/01/2004, 11h05
  4. Réponses: 4
    Dernier message: 10/10/2003, 18h04
  5. nom de fichier et variables d'environnement
    Par joebarthib dans le forum Langage
    Réponses: 2
    Dernier message: 18/07/2002, 15h21

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