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 :

traitement d'image en C


Sujet :

C

  1. #1
    Membre averti
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2011
    Messages : 43
    Par défaut traitement d'image en C
    bonjour

    j'ai trouvé ce code dans une application de chargement d'une image bmp en C
    mais le problem j'arrive pas à comprendre ca sert à qoi le bourrage ici
    qlq peut m'explique en détail merci infiniment
    aussi si c'est possible de m'explique la fonction writefile avec ses argument surtout le nombre 14 :WriteFile(fichier,&fileheader,14,&dummy,NULL);


    /*---------------------------------*/
    //Enregistre un fichier bmp24 bits
    /*---------------------------------*/
    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
    BOOL SaveBmp24(char *path,PIXEL *data,int width,int height)
    {
    	BITMAPFILEHEADER	fileheader;
    	BITMAPINFOHEADER	infoheader;
    	HANDLE				fichier;
    	DWORD				dummy;
    	int					size;
    	int					bourrage = 0;
    	int					i,j,k;
    	char				*ima = NULL;
    
    	fichier = CreateFile(path,
    						 GENERIC_WRITE,
    						 FILE_SHARE_READ,
    						 NULL,
    						 CREATE_ALWAYS,
    						 FILE_ATTRIBUTE_NORMAL,
    						 NULL);
    	if (fichier == INVALID_HANDLE_VALUE)
    		return FALSE;
    
    	fileheader.bfType = 0x4D42;	//"bm"
    	fileheader.bfSize = 54 + width*height*3;
    	fileheader.bfReserved2 = 0;
    	fileheader.bfReserved1 = 0;
    	fileheader.bfOffBits = 54;
    
    	infoheader.biSize = sizeof(BITMAPINFOHEADER);
    	infoheader.biWidth = width;
    	infoheader.biHeight = height;
    	infoheader.biPlanes = 1;
    	infoheader.biBitCount = 24;
    	infoheader.biCompression = 0;
    	infoheader.biSizeImage = width*height;
    	infoheader.biXPelsPerMeter = 0;
    	infoheader.biYPelsPerMeter = 0;
    	infoheader.biClrImportant = 0;
    	infoheader.biClrUsed = 0;
    
    	while ((3*width+bourrage) % 4 != 0)	//calcul du nb de bits de bourrage (3 car 24bits = 3octs)
    		bourrage++;
    
    	size = width*height;
    
    	ima = new char[size*3+bourrage*height];
    	if (ima == NULL)
    	{
    		CloseHandle(fichier);
    		return FALSE;
    	}
    	
    	for(i=0;i<height;i++)
    	{
    		for(j=0;j<width;j++)
    		{
    			ima[i*(3*width+bourrage)+3*j]		= data[(height-i-1)*width+j].b;
    			ima[i*(3*width+bourrage)+3*j+1]	= data[(height-i-1)*width+j].g;
    			ima[i*(3*width+bourrage)+3*j+2]	= data[(height-i-1)*width+j].r;
    		}
    		for(k=1;k<bourrage;k++)
    			ima[i*(3*width+bourrage)+3*j+k] = 0;
    	}

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Février 2010
    Messages : 10
    Par défaut
    Le bourrage ne sert a rien, si ce n'est de respecter la la definition du bmp qui dit que chaque ligne de l'image doit comporter un nombre d'octets multiple de 4.

    De plus :
    BOOL WINAPI WriteFile(
    __in HANDLE hFile,
    __in LPCVOID lpBuffer,
    __in DWORD nNumberOfBytesToWrite,
    __out_opt LPDWORD lpNumberOfBytesWritten,
    __inout_opt LPOVERLAPPED lpOverlapped
    );

    Mais comme tu ne nous à pas copié le code contenant ton appel, on ne va pas pouvoir t'aider beaucoup plus.

Discussions similaires

  1. Traitement d'images : quel langage?
    Par belasri dans le forum Langages de programmation
    Réponses: 19
    Dernier message: 07/10/2005, 09h59
  2. Réponses: 5
    Dernier message: 15/01/2005, 18h29
  3. commande c++ pour le traitement d'images
    Par mateo.14 dans le forum MFC
    Réponses: 2
    Dernier message: 12/01/2005, 10h46
  4. [lib] Traitement d'images
    Par Gogoye dans le forum Multimédia
    Réponses: 4
    Dernier message: 19/11/2004, 16h15
  5. Traitements d'image sur PNG avec transparence
    Par Ingham dans le forum Langage
    Réponses: 16
    Dernier message: 02/08/2004, 16h42

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