Propriétés d'un fichier bmp

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 163 fois - Téléchargée 30 fois

Contenu du snippet

ce code permet de lire quelques propriétés d un fichier BMP comme la resolution, le mode de compression, le nombre de couleurs, la taille de l image
compilé sous borland 6
ps: quelqu un peut me dire pourquoi le programme ne marche pas que je le compile sous devc++ ? merci

Source / Exemple :


//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
#include <fstream.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
        ifstream image;
        unsigned long taille,largeur,hauteur,compression;
        unsigned short couleur;
        image.open(argv[1],ios::binary);    //le chemin de l image est le premier parametre reçu
        if(image.good())
        {
        image.seekg(0x12,ios::beg);
        image.read((char *)&largeur,sizeof(largeur));
        image.seekg(0x16,ios::beg);
        image.read((char *)&hauteur,sizeof(hauteur));
        image.seekg(0x22,ios::beg);
        image.read((char *)&taille,sizeof(taille));
        image.seekg(0x1C,ios::beg);
        image.read((char *)&couleur,sizeof(couleur));
        image.seekg(0x1E,ios::beg);
        image.read((char *)&compression,sizeof(compression));
        cout<<"Largeur: "<<largeur<<" pixels."<<endl;
        cout<<"Hauteur: "<<hauteur<<" pixels."<<endl;
        cout<<"Taille: "<<taille<<" octets."<<endl;
        switch(couleur)
        {
        case 1: cout<<"Couleur: Monochrome."<<endl; break;
        case 4: cout<<"Couleur: 16 couleurs."<<endl; break;
        case 8: cout<<"Couleur: 256 couleurs."<<endl; break;
        case 24: cout<<"Couleur: 16M couleurs."<<endl; break;
        }
        switch(compression)
        {
        case 0: cout<<"Compression: non compressee."<<endl; break;
        case 1: cout<<"Compression: compresse a 8 bits par pixel (RLE8)."<<endl; break;
        case 2: cout<<"Compression: compresse a 4 bits par pixel (RLE4)."<<endl; break;
        }
        image.close();
        }
        else
        {
        cerr<<"Erreur d'ouverture du fichier"<<endl;
        }
        system("PAUSE");
        return 0;
}
//---------------------------------------------------------------------------

Conclusion :


il suffit de glisser le fichier .bmp sur l executable

A voir également

Ajouter un commentaire

Commentaires

morgandetoi06
Messages postés
389
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
17 décembre 2004
1 -
en fait quand je compile le programme sous dev c++ , le programme me sort des valeurs fausses :( quelqu un peut me dire comment resoudre le probleme ? merci d avance
cs_exar
Messages postés
286
Date d'inscription
vendredi 5 décembre 2003
Statut
Membre
Dernière intervention
22 avril 2012
1 -
J'ai exactement le même problème avec la manipulation des BMP avec Dev-C++...
Aucune idée, hélas...
victorcoasne
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
3 -
#include <fstream>
#include <stdlib.h>
#include
/********************
Adapté pour Dev-C++ par victorc
*********************/
using namespace std;
int main(int argc, char* argv[])
{
ifstream image;
unsigned long taille,largeur,hauteur,compression;
unsigned short couleur;
image.open(argv[1],ios::binary); //le chemin de l image est le premier parametre reçu
if(image.good())
{
image.seekg(0x12,ios::beg);
image.read((char *)&largeur,sizeof(largeur));
image.seekg(0x16,ios::beg);
image.read((char *)&hauteur,sizeof(hauteur));
image.seekg(0x22,ios::beg);
image.read((char *)&taille,sizeof(taille));
image.seekg(0x1C,ios::beg);
image.read((char *)&couleur,sizeof(couleur));
image.seekg(0x1E,ios::beg);
image.read((char *)&compression,sizeof(compression));
cout<<"Largeur: "<<largeur<<" pixels."<<endl;
cout<<"Hauteur: "<<hauteur<<" pixels."<<endl;
cout<<"Taille: "<<taille<<" octets."<<endl;
switch(couleur)
{
case 1: cout<<"Couleur: Monochrome."<<endl; break;
case 4: cout<<"Couleur: 16 couleurs."<<endl; break;
case 8: cout<<"Couleur: 256 couleurs."<<endl; break;
case 24: cout<<"Couleur: 16M couleurs."<<endl; break;
}
switch(compression)
{
case 0: cout<<"Compression: non compressee."<<endl; break;
case 1: cout<<"Compression: compresse a 8 bits par pixel (RLE8)."<<endl; break;
case 2: cout<<"Compression: compresse a 4 bits par pixel (RLE4)."<<endl; break;
}
image.close();
}
else
{
cerr<<"Erreur d'ouverture du fichier"<<endl;
}
system("PAUSE");
return 0;
}

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.