Classe image de base

Soyez le premier à donner votre avis sur cette source.

Vue 5 205 fois - Téléchargée 541 fois

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 / Exemple :


// 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

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
35
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
20 avril 2005

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, ...
Messages postés
294
Date d'inscription
samedi 5 février 2005
Statut
Membre
Dernière intervention
24 juillet 2015

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 ^^ )

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.