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 :

g++ et fichiers image/son


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club Avatar de adiya
    Homme Profil pro
    auto didacte
    Inscrit en
    Juillet 2016
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : auto didacte
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2016
    Messages : 90
    Points : 36
    Points
    36
    Par défaut g++ et fichiers image/son
    Bonjour

    j ai essayé de me renseigner... mais je ne trouve pas...

    est il possible, au moyen de g++ de faire une edition de liens avec :
    * les codes sources
    * les bibliotheques SFML
    * ET les fichiers son/images...

    avec l idee d obtenir un executable contenant tout cela ?

    merci de votre aide.
    Le sens d'un Langage est d'exprimer des Concepts... Mais pas trop...

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 636
    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 636
    Points : 10 580
    Points
    10 580
    Par défaut
    Je connais 2 façons de faire C'est

    1) de transformer chaque fichier en chaîne de caractères (avec des caractères imprimables)/ tableau de valeurs et les introduire dans le code sous forme de macro/ variable [globale]/ fonction/ ...
    Édit : @jo_link_noir dans 1 commentaire en dessous me signale que 1 tableau de valeurs hexadécimales est préférable que transformer son fichier en chaîne de caractères. Cela dépend du contexte je dirais.

    2) d'utiliser RC, Resource Compiler de Microsoft. Je te laisse chercher
    Il faut faire 1 fichier .rc [/ .res] qui va faire correspondre chaque ressource via 1 identifiant, identifiant qui sera utilisé dans le code.
    Par contre, il faut sûrement utiliser 1 IDE Microsoft. Et sous Linux, il doit y avoir 1 équivalant ou passer par Qt/ Gnome-GTK.

    Exemple de fichier .rc avec C++ Builder :
    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
    #if defined(_CPP_BUILDER) || defined(_CPP_BUILDER_xe6)
    #include "..\\Project\\Resources\\my_winresrc.h"
    #else
    #include <windows.h>
    #endif
     
     
    #include "Resource.h"
     
     
    LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
    #pragma code_page(1252)
     
     
    1 TEXTINCLUDE DISCARDABLE
    BEGIN
      "Resource.h\0"
    END
     
     
    2 TEXTINCLUDE DISCARDABLE
    BEGIN
       "#include ""winver.h""\r\n"
       "\0"
    END
     
     
    3 TEXTINCLUDE DISCARDABLE
    BEGIN
      "\r\n"
      "\0"
    END
     
     
    VS_VERSION_INFO  VERSIONINFO
      FILEVERSION    PROJECT_IHM_VERSION
    //PRODUCTVERSION PRODUCT_VERSION
      FILEOS         VOS_WINDOWS32
      FILETYPE       VFT_APP
    BEGIN
      BLOCK "StringFileInfo"
      BEGIN
        BLOCK "040C04E4"
        BEGIN
          VALUE "CompanyName",      COMPANY_NAME
          VALUE "ProductName",      PRODUCT_NAME
          VALUE "ProductVersion",   PRODUCT_VERSION_STR
          VALUE "LegalCopyright",   LEGAL_COPYRIGHT
          VALUE "FileVersion",      PROJECT_IHM_VERSION_STR
          VALUE "InternalName",     PROJECT_IHM_NAME
          VALUE "OriginalFilename", PROJECT_IHM_NAME
          VALUE "FileDescription",  PROJECT_IHM_DESCRIPTION_FR
        END
      END
     
      BLOCK "VarFileInfo"
      BEGIN
        VALUE "Translation", 0x040C, 0x04E4
      END
    END
     
     
    LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
     
     
    MAINICON  ICON DISCARDABLE MY_FIRM_LOGO_MULTI
    IDI_ICON1 ICON DISCARDABLE MY_FIRM_LOGO_MULTI
     
    IDB_ATLAS RCDATA "atlas.png"

    my_winresrc.h :
    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
    #ifndef MY_WINRESRC
    #define MY_WINRESRC
     
    #define LANG_ENGLISH       0x09
    #define SUBLANG_ENGLISH_US 0x01
     
    #define LANG_FRENCH    0x0C
    #define SUBLANG_FRENCH 0x01
     
    #define LANG_NEUTRAL    0x00
    #define SUBLANG_NEUTRAL 0x00
     
    #define VS_VERSION_INFO 1
     
    /* ----- VS_VERSION.dwFileFlags ----- */
    #define VS_FF_DEBUG             0x00000001L
    #define VS_FF_PRERELEASE        0x00000002L
    #define VS_FF_PATCHED           0x00000004L
    #define VS_FF_PRIVATEBUILD      0x00000008L
    #define VS_FF_INFOINFERRED      0x00000010L
    #define VS_FF_SPECIALBUILD      0x00000020L
     
    /* ----- VS_VERSION.dwFileOS ----- */
    #define VOS_UNKNOWN             0x00000000L
    #define VOS_DOS                 0x00010000L
    #define VOS_OS216               0x00020000L
    #define VOS_OS232               0x00030000L
    #define VOS_NT                  0x00040000L
    #define VOS_WINCE               0x00050000L
     
    #define VOS_BASE                0x00000000L
    #define VOS_WINDOWS16           0x00000001L
    #define VOS_PM16                0x00000002L
    #define VOS_PM32                0x00000003L
    #define VOS_WINDOWS32           0x00000004L
     
    #define VOS_DOS_WINDOWS16       0x00010001L
    #define VOS_DOS_WINDOWS32       0x00010004L
    #define VOS_OS216_PM16          0x00020002L
    #define VOS_OS232_PM32          0x00030003L
    #define VOS_NT_WINDOWS32        0x00040004L
     
    /* ----- VS_VERSION.dwFileType ----- */
    #define VFT_UNKNOWN             0x00000000L
    #define VFT_APP                 0x00000001L
    #define VFT_DLL                 0x00000002L
    #define VFT_DRV                 0x00000003L
    #define VFT_FONT                0x00000004L
    #define VFT_VXD                 0x00000005L
    #define VFT_STATIC_LIB          0x00000007L
     
     
    #endif // MY_WINRESRC
    Resource.h :
    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
    #ifndef RESOURCE_H
    #define RESOURCE_H
     
     
    #define IDI_ICON1      101
    #define IDB_ATLAS      102
     
     
    #define COMPANY_NAME        "MY_FIRM\0"
    #define PRODUCT_NAME        "MY_TOOL\0"
    #define PRODUCT_NAMEW       L"MY_TOOL"
    #define PRODUCT_VERSION      0
    #define PRODUCT_VERSION_STR "\0"
    #define LEGAL_COPYRIGHT     "2022 - 2023, MY_FIRM\0"
     
     
    #define PROJECT_IHM_VERSION        1,5,1,0
    #define PROJECT_IHM_VERSION_STR   "1.5.1\0"
    #define PROJECT_IHM_VERSION_WSTR L"1.5.1\0"
    #define PROJECT_IHM_NAME          "MY_TOOL.exe\0"
     
    #define PROJECT_IHM_DESCRIPTION_FR "Lecteur/ Encodeur de badges MIFARE DESFire EV1\0"
    #define MY_FIRM_LOGO_MULTI "MY_FIRM\\MY_FIRM.ico"
     
    #endif // RESOURCE_H

  3. #3
    Nouveau membre du Club Avatar de adiya
    Homme Profil pro
    auto didacte
    Inscrit en
    Juillet 2016
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : auto didacte
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2016
    Messages : 90
    Points : 36
    Points
    36
    Par défaut
    Merci de votre reponse

    a priori, la solution (1) me semble preferable...
    j utilise des images .png

    faudrait-il que je me cree un logiciel qui convertit le fichier.png en tableau (a 2 dimensions) pour en faire quelquechose d exploitable dans le code ?
    (avec un copié/collé probablement)...
    Le sens d'un Langage est d'exprimer des Concepts... Mais pas trop...

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 636
    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 636
    Points : 10 580
    Points
    10 580
    Par défaut
    Tu as le format Portable Pixmap (fichier .pbm, .pgm, .ppm, .pnm) et + spécialement le format .pam qui gère la transparence : Netpbm, lien wikipédia en anglais

    Et évidemment ce format est supporté par les logiciels de retouche, de traitement et de dessin via des extensions, par la bibliothèque Netpbm et peut-être d'autres.
    Tu n'as plus qu'à transformer le fichier "ASCII" en chaîne de caractère (et voir comment passer cette chaine de caractères aux fonctions de manipulation) ou en tableau de valeurs via 1 moulinette.

  5. #5
    Nouveau membre du Club Avatar de adiya
    Homme Profil pro
    auto didacte
    Inscrit en
    Juillet 2016
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : auto didacte
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2016
    Messages : 90
    Points : 36
    Points
    36
    Par défaut
    Sinon, j utilise "Visual Studio Community"...

    dans les proprietes du projet, il est peut-etre possible d inclure les fichiers image quelque part dans les options...

    Quelqu un sait-il quelque chose a ce sujet ?
    Bien sur, ca fait que je me passe alors de g++
    Le sens d'un Langage est d'exprimer des Concepts... Mais pas trop...

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 636
    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 636
    Points : 10 580
    Points
    10 580
    Par défaut
    Citation Envoyé par adiya Voir le message
    Sinon, j utilise "Visual Studio Community"...

    dans les proprietes du projet, il est peut-etre possible d inclure les fichiers image quelque part dans les options...
    C'est ce que je disais la solution 2

    Il y a de grandes chances que Visual Studio [Community] gère le(s) fichier(s) .rc/ .res automatiquement (sinon tant pis )
    C'est peut-être en fonction du choix du projet que tu peux ajouter des fichiers dans l'exécutable (mais comme je le disais, je pense que ce sera 1 projet "Windows" avec la liaison d'1 grosse bibliothèque)

  7. #7
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 742
    Points : 3 641
    Points
    3 641
    Par défaut
    Aucune raison d'embarquer les fichiers avec des caractères imprimables, ça ne sert à rien. Ce qu'il faut faire, c'est mettre tous le fichier dans un tableau d'octet. Généralement un simple tableau de char où chaque octet est écrit sous forme hexadécimal pour ne pas avoir de problème de syntaxe. On doit pouvoir trouver des outils qui le font, sinon, ce n'est pas bien compliqué à écrire.

    Les outils plus avancés comme ceux de Qt ajoutent par-dessus un système de fichier qui peut-être utilisé à travers les classes de manipulation de fichier du framework. C'est d'ailleurs peut-être même la seule manière de faire, je crois que les ressources de Qt sont aussi compressées.

    S'il y a beaucoup de ressource, c'est intéressant d'ajouter de la compression, mais certains formats le sont déjà et le gain n'est alors pas énorme (par exemple, png le fait pas ligne et un coup de optipng donnera de bien meilleurs résultats qu'une compression supplémentaire). Sur des formats texte, le gain va être très intéressant, pour le rapport vitesse de décompression / taux de compression, zstd est très bon.

Discussions similaires

  1. Recherche d'un fichier image par son contenu
    Par jportemer dans le forum Windows
    Réponses: 0
    Dernier message: 04/09/2017, 19h08
  2. Passer d'une image à son fichier txt
    Par amtrg dans le forum ImageJ
    Réponses: 1
    Dernier message: 04/07/2012, 11h37
  3. intégrer un fichier image dans une base de donnée?
    Par Lody dans le forum Requêtes
    Réponses: 9
    Dernier message: 16/03/2006, 19h08
  4. Imprimer fichiers images en ligne de commande
    Par naholyr dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 02/09/2004, 18h11
  5. Comment lire un fichier image
    Par Charlemagne dans le forum DirectX
    Réponses: 9
    Dernier message: 12/03/2004, 00h22

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