begin process at 2012 05 29 04:21:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Compression, Split & Cryptage

 > 

Fichier hexa, creation de BMP


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Fichier hexa, creation de BMP

mercredi 13 mai 2009 à 13:01:10 | Fichier hexa, creation de BMP

mikax31

Bonjour à tous, voilà un petit moment que je cherche en vain la réponse à ma question...

Mon objectif : à partir d'un fichier binaire contenant les données brutes d'un image, être capable de créer un autre fichier binaire dans lequel j'aurais crée l'entête bitmap, puis ajouté les données brutes par recopie... (faire un bmp quoi !)

J'ai commencé a recherché a droite a gauche, et j'ai établi un bout de code (qui ne marche pas, bien sur !) donc je viens plaider de l'aide !

int main(int argc, char *argv[])
{
    FILE* fichierSource = NULL;
    FILE* fichierDest = NULL;
    char octet;
   
    fichierSource = fopen("RawData", "rb");
    fichierDest== fopen("Img", "wb");
   
    if ((fichierSource != NULL )&&(fichierDest != NULL))
    {
        /*creation de l'entete
        je ne sais pas du tout comment m'y prendre pour connaitre la taille de l'image.... et les autres données qui vont dans l'entête
        */
       
        //reccopie des données brutes
        fread(&octet,sizeof(char),1,fichierSource);
       
        while(feof(fichierSource)==0)
        {
            fwrite(&octet, sizeof(char), 1, fichierDest);
            fread(&octet,sizeof(char),1,fichierSource);
        }
    }
    else
    {
        printf("Ouverture des fichiers impossible!\n ");
    }
   
    fclose(fichierSource);
    fclose(fichierDest);
    system("PAUSE");
    return 0;
}

Voila, alors mes questions sont :

=>Comment puis-je connaitre les données a mettre dans l'entête (je sais comment est formée l'entête, mais je ne sais pas comment "calculer" la valeur de chaque champs... je ne sais pas si je suis très clair, par exemple je sais qu'on doit mettre la taille de l'image, mais je ne sais pas comment connaitre cette taille !)

=>Une erreur... fichierDest semble etre a null, je ne comprend pas pourquoi...

=>Si le fichierDest s'ouvrait correctement, la partie de code de reccopie est-elle correcte ? ou vaut-il mieux utiliser fputc fputS, fgetc... ?

Je suis désolé si mes questions semblent bêtes, mais c'est mon projet de stage et il y a eu une petite erreur dans les domaines (je suis censé faire de l'info de gestion, pas de la création d'image ! lol) Donc j'essaye de comprendre tant bien que mal et d'avancé...

Merci d'avance pour votre aide

Mikax
mercredi 13 mai 2009 à 14:08:23 | Re : Fichier hexa, creation de BMP

Pistol_Pete

Salut
Regarde la très bonne source de Buno :
http://www.cppfrance.com/codes/LOADER-BMP-TRAITEMENT_33150.aspx
Elle te permettra de mieux comprendre le format bmp
A+

____________________________________________________________________________
Mon site internet :
  
[ Lien ]

mercredi 13 mai 2009 à 14:16:16 | Re : Fichier hexa, creation de BMP

mikax31

bon... autan pour moi j'ai trouvé l'erreur d'ouverture de fichier... faute de frappe lol, ok je sors !
Du coup j'ai ma reponse pour la recopie, ça marche nikel... reste l'entête !

Merci ;)
mercredi 13 mai 2009 à 15:35:59 | Re : Fichier hexa, creation de BMP

mikax31

Réponse acceptée !
Bon beh voilà, sujet résolu, je pars du principe que je connais les dimensions de l'image.
voila le code si ça interesse quelqu'un !

#include <stdio.h>
#include <stdlib.h>

#define HEIGHT 768
#define WIDTH 1024


int main(int argc, char *argv[])
{
    FILE* fichierSource = NULL;
    FILE* fichierDest = NULL;
    char octet, signature, signature2;
    int taillefich, champ, offset, tailleEntete, largeur, hauteur, nbPlan, prof, compr, tailleImg, resH, resV, nbCoul, nbImp;
   
    fichierSource = fopen("RawDatalion1024x768", "rb");
    fichierDest = fopen("Img.bmp", "wb");
   
    if ((fichierSource != NULL )&&(fichierDest != NULL))
    {
        //creation de l'entete
        signature=0x42;
        signature2=0x4D;// car bmp windows
        taillefich=14+40+(HEIGHT*WIDTH*3);//car 3 octet par pixel
        champ=0;
        offset=14+40;
        tailleEntete=40;
        largeur=WIDTH;
        hauteur=HEIGHT;
        nbPlan=1;
        prof=24;
        compr=0;
        tailleImg=(HEIGHT*WIDTH*3);
        resH=0;
        resV=0;
        nbCoul=0;
        nbImp=0;
       
        //FILE HEADER
        fwrite(&signature, sizeof(char), 1, fichierDest);
        fwrite(&signature2, sizeof(char), 1, fichierDest);//la signature entiere fait donc 2 octet
        fwrite((char*)&taillefich, sizeof(char), 4, fichierDest);//taille sur 4 octets...
        fwrite((char*)&champ, sizeof(char), 4, fichierDest);
        fwrite((char*)&offset, sizeof(char), 4, fichierDest);
       
        //Pic Header
        fwrite((char*)&tailleEntete, sizeof(char), 4, fichierDest);
        fwrite((char*)&largeur, sizeof(char), 4, fichierDest);
        fwrite((char*)&hauteur, sizeof(char), 4, fichierDest);
        fwrite((char*)&nbPlan, sizeof(char), 2, fichierDest);
        fwrite((char*)&prof, sizeof(char), 2, fichierDest);
        fwrite((char*)&compr, sizeof(char), 4, fichierDest);
        fwrite((char*)&tailleImg, sizeof(char), 4, fichierDest);
        fwrite((char*)&resH, sizeof(char), 4, fichierDest);
        fwrite((char*)&resV, sizeof(char), 4, fichierDest);
        fwrite((char*)&nbCoul, sizeof(char), 4, fichierDest);
        fwrite((char*)&nbImp, sizeof(char), 4, fichierDest);
       
        //reccopie des données brutes
        fread(&octet,sizeof(char),1,fichierSource);
       
        while(feof(fichierSource)==0)
        {
            fwrite(&octet, sizeof(char), 1, fichierDest);
            fread(&octet,sizeof(char),1,fichierSource);
        }
    }
    else
    {
        printf("Ouverture des fichiers impossible!\n ");
    }
   
    fclose(fichierSource);
    fclose(fichierDest);
    system("PAUSE");
    return 0;
}




Cette discussion est classée dans : fichier, données, char, fichiersource, fichierdest


Répondre à ce message

Sujets en rapport avec ce message

Exportation de données [ par Niníel ] Hello.J'ai un p'tit souci pour exporter mes données vers un fichier CSV. Je m'explique: Premièrement, j'ai une structure:struct TFilm{ char chTitre Exportation de données [ par Niníel ] Hello.J'ai un p'tit souci pour exporter mes données vers un fichier CSV. Je m'explique: Premièrement, j'ai une structure:struct TFilm{char chTitre[25] PB avec fichier ini [ par ricky78 ] j'ai réalisé un prg qui lit des données dans un fichier ini avec la fonction GetPrivateProfileString. Mon prg teste la présence du ini toute le n seco pb avec la fonction fread et la concatenation de fichiers bmp [ par Cako19 ] Bonjour,j'ai un pb avec la fonction fread avec le code suivant: tailleFichier = (donneesFichier.nFileSizeHigh)*MAXDWORD+(donneesFichier.nFileSizeLow); Erreurs de compilations bizarres avec Visual C++ 6 [ par VTS_35 ] Bonjour,G encore des problèmes de compilation avec mon programme. Je me suis rendu compte que le programme allait devenir balaise, alors j'ai décidé d Logiciel transformant un fichier texte en base de données Access [ par makandja ] Salut à tous, Voilà j'aimerais réaliser un module logiciel réalisant la transformation d'un fichier texte de mesures en base de données de type Micr Trames vers base de données ACCESS [ par makandja ] Salut à tous, J'aimerais réaliser un module logiciel réalisant la transformation d'un fichier texte de mesures en base de données de type Microsoft A lecture de chaine de char dans un fichier .doc [ par talaron ] salutj'ai besoin d'un ptit coup de main informatiquedans un programme j'enregistre 3 tablo dans un fichier .txt ou .doc les deux premiers sont des tab lire les données d'un fichier langage C [ par khalidlyon ] Bonjour,pb. du C.Comment on peux associer au tableaux X et Y les valeurs qui se trouvent dans un fichier "donner.dat" sous la forme suivant:dim 5X unhandled exception... [ par ganfoud ] j'ai droit au message d'erreur unhandled exception in calcul.exe: 0xC0000005 Access Violation sous VC++et le curseur du debugger me place dans la fonc


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,281 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales