Classe image de base

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

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.