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

Autres langages Discussion :

[RTF] Insertion d'une image BMP


Sujet :

Autres langages

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 7
    Points
    7
    Par défaut [RTF] Insertion d'une image BMP
    Bonjour à tous,

    j'aurais aimé savoir si quelqu'un connaissait la programmation RTF car j'ai quelque soucis au niveau de la compréhension d'un fichier RTF lorsque l'on met une image dedans.
    en fait, je dois réaliser un programme en C permettant d'insérer une image bmp dans un fichier RTF seulement en donnant le nom de l'image BMP.

    Merci d'avance

    didinel

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    La question a déjà été traitée sur plusieurs forums :
    http://www.developpez.net/forums/vie...ght=rtf+bitmap
    ... et d'autres, merci de faire une recherche avancée.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 7
    Points
    7
    Par défaut RTF?
    Bonjour Alcatîz ,

    merci d'avoir répondu mais ma question n'était pas est ce que quelqu'un à un programme qui permet d'insérer une image BMP dans un fichier RTF mais est ce que quelqu'un connaît la programmation RTF.

    Donc ma question est toujours valide.
    Et puis je ne vois pas comment tu veux que j'utilise un RichEdit alors que je suis en mode console sans MFC ni rien. J'ai déjà lue la source que tu as mis en lien et j'avais également fait une recherche avancée.


    Voilà bonne journée

  4. #4
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut Re: RTF?
    Citation Envoyé par didinel
    je ne vois pas comment tu veux que j'utilise un RichEdit alors que je suis en mode console sans MFC ni rien
    Un fichier RTF n'est rien qu'un fichier texte avec des balises.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 7
    Points
    7
    Par défaut Bmp dans RTF
    je suis au courant qu'un fichier RTF n'est rien d'autre qu'un fichier texte avec des balises (j'ai fait de la programmation RTF). Mais au départ m'a question ne concerne pas l'algorithme d'insertion d'une image BMP dans un fichier RTF, j'explique seulement le programme que je dois réaliser. En aucun cas je veux que l'on me dise comment l'on insére une image BMP dans un fichier RTF.

    Je veux juste savoir si quelqu'un connait la programmation RTF et notamment les balises pour l'insertion d'une image.

    Voilà c'est tout

  6. #6
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Pourrais-tu donner quelques précisions : taille d'origine de l'image, taille à afficher, nombre de couleurs de l'image, etc ?
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 7
    Points
    7
    Par défaut Re bmp
    En fait il faut que mon programme fonctionne avec n'importe quel image BMP.

    Voilà

    Bonne journée

  8. #8
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    S'il s'agit de fichiers BMP (dépendantes du périphérique), c'est relativement simple (quoique, l'analyse du fichier en lui-même ne l'est pas toujours) :
    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
    {\pict
    \wbmbitspixel8   ; 8 = 256 couleurs
    \wbmplanes1	   ; Nombre de plans de couleurs (doit être à 1)
    \wbmwidthbytes26 ; Nb d'octets par ligne
    \picw200         ; Largeur en pixels
    \pich100         ; Hauteur en pixels
    \picwgoal594     ; Largeur en twips
    \pichgoal221     ; Hauteur en twips
    \picscalex150    ; % de zoom en largeur
    \picscaley150    ; % de zoom en hauteur
    55F2000000000273023D1101A0
    303901000A000000000273023D
    98004800020000027502040000
    200010275023E0000000002730
    23D000002B90002B90002B9000
    2B90002B90002B90002B90002B
    90002B90002B90002B92222B90
    002B90002B90002B90002B9000
    2B90002B90002B90002B900000
    }
    Le champ \wbmwidthbytes doit être calculé en prenant le 1/8 du multiple de 16 immédiatement supérieur à la largeur (en pixels).
    Dans l'exemple ci-dessus, la bitmap fait 200 pixels de large; le multiple de 16 immédiatement supérieur est 208 donc \wbmwidthbytes vaut 208 / 8 = 26.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 7
    Points
    7
    Par défaut Bmp dans RTF
    merci bien pour les infos

    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
    {\pict 
    \wbmbitspixel8   ; 8 = 256 couleurs 
    \wbmplanes1      ; Nombre de plans de couleurs (doit être à 1) 
    \wbmwidthbytes26 ; Nb d'octets par ligne 
    \picw200         ; Largeur en pixels 
    \pich100         ; Hauteur en pixels 
    \picwgoal594     ; Largeur en twips 
    \pichgoal221     ; Hauteur en twips 
    \picscalex150    ; % de zoom en largeur 
    \picscaley150    ; % de zoom en hauteur 
    55F2000000000273023D1101A0 
    303901000A000000000273023D 
    98004800020000027502040000 
    200010275023E0000000002730 
    23D000002B90002B90002B9000 
    2B90002B90002B90002B90002B 
    90002B90002B90002B92222B90 
    002B90002B90002B90002B9000 
    2B90002B90002B90002B900000 
    }

    est ce que toutes les balises sont nécessaires ?
    La séquence de chiffres c'est bien de l'hexa décimal ? car si c'est le l'hexa décimal les premiers chiffres que l'on devrait voir c'est 42 (BM correspondant au format de l'image BMP non ? )


    Merci encore

    didinel

  10. #10
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut Re: Bmp dans RTF
    Citation Envoyé par didinel
    les premiers chiffres que l'on devrait voir c'est 42 (BM correspondant au format de l'image BMP non ?
    Les informations des headers du fichier BMP sont reprises dans les balises. Le code hexadécimal (N.B. il est également possible de mettre du binaire) est la bitmap elle-même.

    Le 42 magique fait partie du petit header du fichier; vient ensuite le header d'information, avec les largeur et hauteur, le nombre de plans de couleurs, les résolutions horizontale et verticale (en pixels/mètre), le nombre de couleurs... Ensuite, éventuellement la palette (inutilisable dans le code RTF) et enfin la bitmap elle-même.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 7
    Points
    7
    Par défaut BMP RTF
    Bonjour Alcatîz,

    voici mon code, je tiens à repréciser que je ne peux pas utiliser les RichEdit (j'en ai discuter avec mon chef de projet il ne veut pas).

    Je récupère bien l'image en hexadecimal mais lorsque je l'édite avec word cela ne fonctionne pas

    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    FILE         *fSrc;
    FILE	*fDest;
    char	*szText;
    
    int	ch;
    int	i;
    
    WORD	num_colors;				
    WORD	width;
    WORD	height;
    
    szText	=       new char [10];
    
    fSrc	=       fopen("C:\\WINNT\\Rosace bleue 16.bmp", "rb");
    
    if( fSrc == NULL )
    {
    	printf("ERREUR C:\\WINNT\\Rosace bleue 16.bmp \n" );
    	exit(0);
    }
    
    if (fgetc(fSrc)!='B' || fgetc(fSrc)!='M')
    {
    	fclose(fSrc);
    	printf("%s is not a bitmap file.\n");
    	exit(1);
    }
    
    fskip(fSrc,16);
    fread(&width, sizeof(WORD), 1, fSrc);
    printf("hauteur : %d \n", width);
    fskip(fSrc,2);
    fread(&height,sizeof(WORD), 1, fSrc);
    printf("largeur : %d \n", height);
    fskip(fSrc,22);
    fread(&num_colors,sizeof(WORD), 1, fSrc);
    printf("nb de couleur : %d \n", num_colors);
    fskip(fSrc,6);
    fDest	=	fopen("U:\\toto.RTF", "w");
    
    if( fDest == NULL )
    {
    	printf("ERREUR \n" );
    	exit(0);
    }
    
    fprintf(fDest, "{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1036{\\fonttbl{\\f0\\fswiss\\fcharset0 Arial;}}\n");
    
    fprintf(fDest, "\\viewkind4\\uc1\\pard\\f0\\fs20{\\pict\\wbmbitspixel8\\wbmplanes1\\wbmwidthbytes26\\picw48\\pich48\\picwgoal720\\pichgoal720 \n");
    
    fseek(fSrc, 0, SEEK_SET );
    
    ch	=	fgetc( fSrc );
    sprintf( szText, "%02x", ch);
    fprintf( fDest, "%s", szText );
    
    i = 2;
    	
    while( feof( fSrc ) == 0 )
    {
    	ch = fgetc( fSrc );
    	sprintf( szText, "%02x", ch);
    	if( i	==	39 )
    	{
     		fprintf( fDest, "%s\n", szText );
    		i		=	0;
    	}
    	else
    	{
    		fprintf( fDest, "%s", szText );
    	}
    	i++;
    }
    
    fprintf(fDest, "}}\\par}");
    
    fclose( fSrc );
    fclose( fDest );
    
    delete [] szText;
    voilà en espérant que tu pourras m'apporter une réponse.

    Merci beaucoup

    didinel

  12. #12
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    La balise \wmbitspixel définit le nombre de couleurs comme suit :
    • \wmbitspixel1 = 2 couleurs,
      \wmbitspixel4 = 16 couleurs,
      \wmbitspixel8 = 256 couleurs,
      \wmbitspixel24 = true colors.

    Si \picw vaut 48, la valeur de la balise \wbmwidthbytes doit être 6 ( 48 / 8 ) et non 26.

    Pour comparer, tu peux insérer l'image dans un document Word et sauvegarder en RTF ?
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 7
    Points
    7
    Par défaut Bmp dans RTF
    je vais ressayer tout ce que tu me dis je te retiendrais au courant lundi.

    Est ce que tu as regarder mon code? Te semble t-il exact?

    bon fin de week-end

    didinel

  14. #14
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut Re: Bmp dans RTF
    Citation Envoyé par didinel
    Est ce que tu as regarder mon code? Te semble t-il exact?
    Je ne suis pas trop familier du C donc merci d'être indulgent

    La présence ou non d'une palette n'est pas abordée dans ton code. Mais pour l'éviter, tu pourrais déterminer à quel offset la bitmap commence dans le fichier, en récupérant le double-mot à l'offset 11 de la structure BITMAPFILEHEADER :
    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
    if (fgetc(fSrc)!='B' || fgetc(fSrc)!='M')
    {
    	fclose(fSrc);
    	printf("%s is not a bitmap file.\n");
    	exit(1);
    }
    
    /* début de l'ajoute */
    fskip(fSrc,8);
    fread(&offset_bitmap, sizeof(DWORD), 1, fSrc);
    printf("offset de la bitmap : %d \n", offset_bitmap);
    /* fin de l'ajoute */
    
    fskip(fSrc,4);                             /* au lieu de 16 */
    fread(&width, sizeof(WORD), 1, fSrc);
    Les champs biWidth, biHeight et biClrUsed de la structure BITMAPINFOHEADER sont des doubles mots. Il aurait donc fallu écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    fread(&width, sizeof(DWORD), 1, fSrc);     /* au lieu de WORD */
    printf("hauteur : %d \n", width);
    fskip(fSrc,4);                             /* au lieu de 2 */
    fread(&height,sizeof(DWORD), 1, fSrc);     /* au lieu de WORD */
    printf("largeur : %d \n", height);
    fskip(fSrc,24);                            /* au lieu de 22 */
    fread(&num_colors,sizeof(DWORD), 1, fSrc); /* au lieu de WORD */
    Ensuite, pourquoi n'utilises-tu pas les valeurs de tes variables pour compléter les balises ?
    Par exemple, il suffit de coller la valeur de width à \picw, celle de height à \pich et celle de num_colors à la balise \wbmbitspixel.

    Citation Envoyé par didinel
    bon fin de week-end
    Merci et réciproquement !
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 7
    Points
    7
    Par défaut BMP dans RTF
    Bonjour


    Excuse pour le MP

    Autre chose : tes balises \picw et \pich ont une valeur de 48 ? Il doit y avoir une erreur car ça doit être exprimé en pixels.

    Si ça peut t'aider, le code hexa à écrire doit correspondre au résultat de la fonction GetDIBits().
    Ok j'ai regardé un peu l'utilisation de la méthode
    int GetDIBits(
    HDC hdc, // handle to device context
    HBITMAP hbmp, // handle to bitmap
    UINT uStartScan, // first scan line to set in destination bitmap
    UINT cScanLines, // number of scan lines to copy
    LPVOID lpvBits, // address of array for bitmap bits
    LPBITMAPINFO lpbi, // address of structure with bitmap data
    UINT uUsage // RGB or palette index
    );

    donc en fait si je comprends bien tu recupére l'image dans le LPVOID?

    Mais là je n'arrive pas à l'exploiter , je récupère seulement 4 caractères donc doit y avoir un pti problème.

    Est ce que tu sais comment ça marche?
    Je continue de chercher de l'aide de mon côté.

    Bonne journée

    Didine

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 7
    Points
    7
    Par défaut BMP dans RTF
    Salut Alcatîz,

    En relisant tes postes je me suis aperçu d'une erreur dans mon prog,

    Les informations des headers du fichier BMP sont reprises dans les balises. Le code hexadécimal (N.B. il est également possible de mettre du binaire) est la bitmap elle-même.
    avant ma boucle while je décalais mon curseur au début du fichier BMP or en fait il faut que je passe le header de l'image donc j'ai réctifié ça.
    En analysant de ce fait mon résultat et celui du copier coller j'obtiens des parties communes mais une est différente

    je te montre les différences sur l'image du copier coller en rouge c'est la partie différente et en bleue la partie commune :

    Image à moi
    {\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
    \viewkind4\uc1\pard\f0\fs20{\pict\wbmbitspixel8\wbmplanes1\wbmwidthbytes6\picw1270\pich1270
    000000000000000000000000000000008000008000000080800080000000800080008080000080
    808000c0c0c0000000ff0000ff000000ffff00ff000000ff00ff00ffff0000ffffff004444444c
    44444444c4c444444444c4c44444444c444444444444ccc44444444c44c444444444c44c444444
    44ccc4444444cc44444444444c4c44444444444c4c44444444444cc4444c444444444444c44c44
    444444444c44c444444444444c444c444cccc444cc44c4444444444444c44cc444cccc444c444c
    44c4444ccc444c444444444444444c444ccc4444c44c44c44c4444444444c44444444c44444444
    c4444444444c44c4c4c4444cc444cc44444444ccc44444444cc444cc4444c4c4cc4c44c44ccc44
    444444ccc4ccc44444444ccc44c44c4cc44444c44c44444444444cc44c44cc44444444444c44c4
    444c4444c44c4444444444cc4ccccc4cc4444444444c44c444444444c44c444444444cc4cccccc
    c4cc444444444c44c44444444c44c4444444444cc4ccccccc4cc4444444444c44c4444444c44c4
    44444444cc4ccccccccc4cc444444444c44c444444c44c4444444444cc4ccccccccc4cc4444444
    444c44c444cc44c44444444444cc4cccc4cccc4cc44444444444c44cc4444c4444444444444cc4
    cc4c4cc4cc4444444444444c444c4cc44444444ccc44cccc4c4c4c4cccc44ccc44444444cc44c4
    4444444cccccccccc4cc4c4cc4cccccccccc44444444c444444444ccc444cccc4cc4ccc4cc4ccc
    c444ccc44444444c4444444cc44ccc4444ccc4ccc4ccc4444ccc44cc44444444444444cc4ccccc
    ccccccc4ccc4cccccccccccc4cc4444444444444c4ccccccccccc44ccccc44ccccccccccc4c444
    444444444cc4cccccccc444ccccccccc444cccccccc4cc44444444444c4cccccccc4cccccccccc
    ccccc4cccccccc4c44444444444cc4cccccccc444ccccccccc444cccccccc4cc444444444444c4
    ccccccccccc44ccccc44ccccccccccc4c4444444444444cc4cccccccccccc4ccc4cccccccccccc
    4cc44444444444444cc44ccc4444ccc4ccc4ccc4444ccc44cc4444444444444444ccc444cccc4c
    c4ccc4cc4cccc444ccc44444444cc44444444cccccccccc4cc4c4cc4cccccccccc44444444c44c
    c44444444ccc44cccc4c4c4c4cccc44ccc44444444cc44444c4444444444444cc4c44c44c4cc44
    44444444444c444ccc44c44444444444cc4cccc4cccc4cc44444444444c44cc444c44c44444444
    44cc4ccccccccc4cc4444444444c44c444444c44c444444444cc4ccccccccc4cc444444444c44c
    4444444c44c4444444444cc4ccccccc4cc4444444444c44c44444444c44c444444444cc4cccccc
    c4cc444444444c44c444444444c44c4444444444cc4ccccc4cc4444444444c44c444444444c44c
    44444444444cc44c44cc44444444444c44c4444cc44c44c44ccc44444444ccc4ccc44444444ccc
    44c44c44c4c4c4444cc444cc44444444ccc44444444cc444cc4444c4c4c44c4444444444c44444
    444c44444444c4444444444c44c44c44c4444ccc444c444444444444444c444ccc4444c44c444c
    444cccc444cc44c4444444444444c44cc444cccc444c444c444444444444c44c44444444444c44
    c444444444444c4444cc44444444444c4c44444444444c4c44444444444cc4444444ccc4444444
    4c44c444444444c44c44444444ccc444440000ffffffff}}\par}

    Image copier coller

    {\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
    \viewkind4\uc1\pard\f0\fs20{\pict\wmetafile8\picw1270\pich1270\picwgoal720\pichgoal720
    0100090000039b02000000008102000000000400000003010800050000000c02d0ff3000050000
    000b020000000081020000410b2000cc003000300000000000d0ff300000000000280000003000
    0000300000000100040000000000800400000000000000000
    00000000000000000000000000000
    008000008000000080800080000000800080008080000080808000c0c0c0000000ff0000ff0000
    00ffff00ff000000ff00ff00ffff0000ffffff004444444c44444444c4c444444444c4c4444444
    4c444444444444ccc44444444c44c444444444c44c44444444ccc4444444cc44444444444c4c44
    444444444c4c44444444444cc4444c444444444444c44c44444444444c44c444444444444c444c
    444cccc444cc44c4444444444444c44cc444cccc444c444c44c4444ccc444c444444444444444c
    444ccc4444c44c44c44c4444444444c44444444c44444444c4444444444c44c4c4c4444cc444cc
    44444444ccc44444444cc444cc4444c4c4cc4c44c44ccc44444444ccc4ccc44444444ccc44c44c
    4cc44444c44c44444444444cc44c44cc44444444444c44c4444c4444c44c4444444444cc4ccccc
    4cc4444444444c44c444444444c44c444444444cc4ccccccc4cc444444444c44c44444444c44c4
    444444444cc4ccccccc4cc4444444444c44c4444444c44c444444444cc4ccccccccc4cc4444444
    44c44c444444c44c4444444444cc4ccccccccc4cc4444444444c44c444cc44c44444444444cc4c
    ccc4cccc4cc44444444444c44cc4444c4444444444444cc4cc4c4cc4cc4444444444444c444c4c
    c44444444ccc44cccc4c4c4c4cccc44ccc44444444cc44c44444444cccccccccc4cc4c4cc4cccc
    cccccc44444444c444444444ccc444cccc4cc4ccc4cc4cccc444ccc44444444c4444444cc44ccc
    4444ccc4ccc4ccc4444ccc44cc44444444444444cc4cccccccccccc4ccc4cccccccccccc4cc444
    4444444444c4ccccccccccc44ccccc44ccccccccccc4c444444444444cc4cccccccc444ccccccc
    cc444cccccccc4cc44444444444c4cccccccc4ccccccccccccccc4cccccccc4c44444444444cc4
    cccccccc444ccccccccc444cccccccc4cc444444444444c4ccccccccccc44ccccc44cccccccccc
    c4c4444444444444cc4cccccccccccc4ccc4cccccccccccc4cc44444444444444cc44ccc4444cc
    c4ccc4ccc4444ccc44cc4444444444444444ccc444cccc4cc4ccc4cc4cccc444ccc44444444cc4
    4444444cccccccccc4cc4c4cc4cccccccccc44444444c44cc44444444ccc44cccc4c4c4c4cccc4
    4ccc44444444cc44444c4444444444444cc4c44c44c4cc4444444444444c444ccc44c444444444
    44cc4cccc4cccc4cc44444444444c44cc444c44c4444444444cc4ccccccccc4cc4444444444c44
    c444444c44c444444444cc4ccccccccc4cc444444444c44c4444444c44c4444444444cc4cccccc
    c4cc4444444444c44c44444444c44c444444444cc4ccccccc4cc444444444c44c444444444c44c
    4444444444cc4ccccc4cc4444444444c44c444444444c44c44444444444cc44c44cc4444444444
    4c44c4444cc44c44c44ccc44444444ccc4ccc44444444ccc44c44c44c4c4c4444cc444cc444444
    44ccc44444444cc444cc4444c4c4c44c4444444444c44444444c44444444c4444444444c44c44c
    44c4444ccc444c444444444444444c444ccc4444c44c444c444cccc444cc44c4444444444444c4
    4cc444cccc444c444c444444444444c44c44444444444c44c444444444444c4444cc4444444444
    4c4c44444444444c4c44444444444cc4444444ccc44444444c44c444444444c44c44444444ccc4
    44440
    30000000000}\par
    }

    La première séquence en rouge à quoi correspond t-elle?

    Si tu as une solution ou alors est ce que avec getdibits j'arriverai au bon résultat ?

    didinel

  17. #17
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut Re: BMP dans RTF
    Citation Envoyé par didinel
    La première séquence en rouge à quoi correspond t-elle?
    Difficile à dire comme cela sans avoir le fichier à disposition...

    Citation Envoyé par didinel
    est-ce que avec getdibits j'arriverai au bon résultat ?
    Normalement, tu dois obtenir les octets de ta solution. Mais ça te permettrait peut-être de vérifier que tu débutes au bon offset dans le fichier BMP.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  18. #18
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Le fichier "Rosace bleue 16.bmp" de Windows 2000 que tu utilises est une bitmap 16 couleurs, donc la balise \wmbitspixel vaut 4 et non 8.

    Les données additionnelles en rouge ne correspondent à aucune information du fichier BMP (ni les headers, ni la palette). Il s'agit vraisemblablement de l'habillage du format métafichier autour de la bitmap. Mais là, ça dépasse mes modestes compétences...

    Si tu veux t'y atteler sans procéder par tâtonnements, il te faut trouver une doc en béton. Et mes recherches sur Google n'ont pas apporté grand chose
    Une intro aux métafichiers : http://wvware.sourceforge.net/caolan/ora-wmf.html

    Bon courage
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 7
    Points
    7
    Par défaut re bmp
    Ok merci pour ton aide en fait c'est chaud je vais revoir avec mon chef lui exposer ce que j'ai fait et puis si dès fois on trouve je te retiendrais au courant

    merci beaucoup encore

    didinel

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 54
    Points : 23
    Points
    23
    Par défaut
    bonjour, je suis confronté a un problème similaire, et je pense commencer a entrevoir la solution (grace aux infos trouvées dans ce post)

    @didinel -> pour ce qui concerne la difference entre tes 2 fichiers, c'est normal, dans le premier, ton image est codée en \wbitmap0 et le second en \wmetafile8 les parties en rouge sont donc l'encapsulation WMF

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Insertion d'une image BMP dans un fichier RTF
    Par didinel dans le forum MFC
    Réponses: 8
    Dernier message: 18/08/2005, 09h24
  2. Réponses: 2
    Dernier message: 19/11/2004, 08h54
  3. [C#] Comment convertir une image bmp en jpg !!!
    Par vandeyy dans le forum Windows Forms
    Réponses: 5
    Dernier message: 13/07/2004, 20h37
  4. inserer une image BMP dans un fichier rtf
    Par Alice9 dans le forum MFC
    Réponses: 17
    Dernier message: 06/07/2004, 10h31
  5. [BPW] Impression d'une image BMP
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 21/08/2003, 14h34

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