begin process at 2012 05 27 14:31:43
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > CLASSE IMAGE DE BASE

CLASSE IMAGE DE BASE


 Information sur la source

Note :
Aucune note
Catégorie :Graphique Niveau :Débutant Date de création :15/04/2005 Vu / téléchargé :3 789 / 478

Auteur : samuelbrie

Ecrire un message privé
Site perso
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

C'est une toute petite classe qui permet de lire un bmp, de le modifier est de le réécrire, c'est tout bête, mais pour ceux qui ne savent pas le faire, c'est utile

Source

  • // ImageBase.h: interface for the CImageBase class.
  • //
  • //////////////////////////////////////////////////////////////////////
  • Class CImageBase
  • {
  • public:
  • void EcritureEntete(int,int,int);
  • CImageBase();
  • virtual ~CImageBase();
  • void Lecture(CString);
  • void Sauvegarde(CString);
  • unsigned char *PImage;
  • int Largeur;
  • int Hauteur;
  • BITMAPFILEHEADER Tete;
  • BITMAPINFO Info;
  • };
  • // ImageBase.cpp: implementation of the CImageBase class.
  • //
  • //////////////////////////////////////////////////////////////////////
  • #include "stdafx.h"
  • #include "ImageBase.h"
  • //////////////////////////////////////////////////////////////////////
  • // Construction/Destruction
  • //////////////////////////////////////////////////////////////////////
  • CImageBase::CImageBase()
  • {
  • }
  • CImageBase::~CImageBase()
  • {
  • free(PImage);
  • }
  • void CImageBase::Lecture(CString InitFileName)
  • {
  • CFile FichierL;
  • if(FichierL.Open(InitFileName,CFile::modeRead))
  • {
  • FichierL.Read(&Tete,sizeof(BITMAPFILEHEADER));
  • if(Tete.bfType =='MB')
  • {
  • FichierL.Read(&Info,sizeof(BITMAPINFOHEADER));
  • Largeur=Info.bmiHeader.biWidth ;
  • Hauteur=Info.bmiHeader.biHeight ;
  • PImage = (unsigned char*) malloc(Largeur*Hauteur*3*sizeof(BYTE));
  • FichierL.Read(PImage,Largeur*Hauteur*3*sizeof(BYTE));
  • }
  • FichierL.Close();
  • }
  • }
  • void CImageBase::Sauvegarde(CString NomFichier)
  • {
  • CFile FichierS;
  • if(FichierS.Open(NomFichier,CFile::modeWrite|CFile::modeCreate))
  • {
  • FichierS.Write(&Tete,sizeof(BITMAPFILEHEADER));
  • FichierS.Write(&Info,sizeof(BITMAPINFOHEADER));
  • FichierS.Write(PImage,Info.bmiHeader.biSizeImage/*Largeur*Hauteur*3*sizeof(BYTE)*/);
  • FichierS.Close();
  • }
  • }
  • void CImageBase::EcritureEntete(int Larg, int Haut, int bits)
  • {
  • Largeur=Larg;
  • Hauteur=Haut;
  • Info.bmiHeader.biBitCount=bits;
  • Info.bmiHeader.biClrImportant=0;
  • Info.bmiHeader.biHeight=Haut;
  • Info.bmiHeader.biWidth=Larg;
  • Info.bmiHeader.biClrUsed = 0;
  • Info.bmiHeader.biCompression = BI_RGB;
  • Info.bmiHeader.biPlanes = 1;
  • Info.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
  • Info.bmiHeader.biXPelsPerMeter = 0;
  • Info.bmiHeader.biYPelsPerMeter = 0;
  • Info.bmiHeader.biSizeImage = Larg*Haut*bits*sizeof(BYTE)/8;
  • if(bits==8)
  • Tete.bfOffBits = 1078;
  • else
  • Tete.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
  • Tete.bfReserved1 = 0;
  • Tete.bfReserved2 = 0;
  • Tete.bfSize = Tete.bfOffBits + Info.bmiHeader.biSizeImage;
  • Tete.bfType = 'MB';
  • PImage = (unsigned char*) malloc(Info.bmiHeader.biSizeImage);
  • }
// ImageBase.h: interface for the CImageBase class.
//
//////////////////////////////////////////////////////////////////////
Class CImageBase  
{
public:
	void EcritureEntete(int,int,int);
	CImageBase();
	virtual ~CImageBase();
	void Lecture(CString);
	void Sauvegarde(CString);
	unsigned char *PImage;
	int Largeur;
	int Hauteur;
	BITMAPFILEHEADER Tete;
	BITMAPINFO Info;
};

// ImageBase.cpp: implementation of the CImageBase class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ImageBase.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CImageBase::CImageBase()
{

}

CImageBase::~CImageBase()
{
	free(PImage);
}

void CImageBase::Lecture(CString InitFileName)
{
	CFile FichierL;
	if(FichierL.Open(InitFileName,CFile::modeRead))
	{	
		FichierL.Read(&Tete,sizeof(BITMAPFILEHEADER));
		if(Tete.bfType =='MB')
		{	
			FichierL.Read(&Info,sizeof(BITMAPINFOHEADER));
			Largeur=Info.bmiHeader.biWidth ;
			Hauteur=Info.bmiHeader.biHeight ;
			PImage = (unsigned char*) malloc(Largeur*Hauteur*3*sizeof(BYTE));
			FichierL.Read(PImage,Largeur*Hauteur*3*sizeof(BYTE));
		}
		FichierL.Close();
	}
}

void CImageBase::Sauvegarde(CString NomFichier)
{
	CFile FichierS;
	if(FichierS.Open(NomFichier,CFile::modeWrite|CFile::modeCreate))
	{
		FichierS.Write(&Tete,sizeof(BITMAPFILEHEADER));
		FichierS.Write(&Info,sizeof(BITMAPINFOHEADER));
		FichierS.Write(PImage,Info.bmiHeader.biSizeImage/*Largeur*Hauteur*3*sizeof(BYTE)*/);
		FichierS.Close();
	}
}

void CImageBase::EcritureEntete(int Larg, int Haut, int bits)
{
	Largeur=Larg;
	Hauteur=Haut;
    Info.bmiHeader.biBitCount=bits;
    Info.bmiHeader.biClrImportant=0;
	Info.bmiHeader.biHeight=Haut;
	Info.bmiHeader.biWidth=Larg;
    Info.bmiHeader.biClrUsed = 0;
    Info.bmiHeader.biCompression = BI_RGB;
    Info.bmiHeader.biPlanes = 1;
    Info.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
    Info.bmiHeader.biXPelsPerMeter = 0;
    Info.bmiHeader.biYPelsPerMeter = 0;
    Info.bmiHeader.biSizeImage = Larg*Haut*bits*sizeof(BYTE)/8;
	if(bits==8)
		Tete.bfOffBits = 1078;
	else
		Tete.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
	Tete.bfReserved1 = 0;
	Tete.bfReserved2 = 0;
	Tete.bfSize = Tete.bfOffBits + Info.bmiHeader.biSizeImage;
	Tete.bfType = 'MB';
	PImage = (unsigned char*) malloc(Info.bmiHeader.biSizeImage);
}

 Conclusion

Je vais y ajouter des fonctions de traitement d'image quand j'aurai le temps

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture SUIVI DE FORME
Source avec Zip BASE WEBCAM FW

 Sources de la même categorie

Source avec Zip Source avec une capture PLANNING D'EQUIPE par grephit
Source avec Zip APPLICATION DE DESSIN DE QUELQUES FIGURES par laguchori
Source avec Zip Source avec une capture HDR EXPOSURE FUSION par mecrosoft
Source avec Zip Source avec une capture IRC CLIENT MULTISERVEUR EN MFC (TXIRC) par TeniX
Source avec Zip ENTETE DU FICHIER BMP (BIPMAP) par k.Lutchi

Commentaires et avis

Commentaire de T_Mehdi le 15/04/2005 19:54:12

j'aimme bien ta classe surout pour ecrire ^^

ah oui j'allai oubliai pour traitement d'image tu peut chercher ma source WGEL qui peremt de faire un traitemnt d'image ^^ il permet d'appliquer + de 50 effet parametré ^^ (il ya dedans plien de fonction que j'ai creé moi meme ^^ )

Commentaire de samuelbrie le 15/04/2005 20:05:06

Pour les traitements, je vais allé voir, mas ce qui m'interesse, c'est de modifier le pointeur sur l'image en lui appliquant des filtres, étiquettage, classification, ...

 Ajouter un commentaire




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,608 sec (4)

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