Packed DIB et BMP

Résolu
Shadiest Messages postés 20 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 2 juillet 2006 - 28 oct. 2005 à 18:11
Shadiest Messages postés 20 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 2 juillet 2006 - 28 oct. 2005 à 18:35
Je souhaite extraire une image d'un fichier AVI pour, par la suite, lui appliquer des transformations



J'utilise donc la fonction "AVIStreamGetFrame" qui retourne (à ce que
j'ai compris) un pointeur sur "paquet DIB" qui contient l'entete
BITMAPINFOHEADER suivi des informations du Bitmap, je souhaite acceder
à ces informations et faire de ma frame un objet de la classe Image
décrite ici : 30768 http://www.cppfrance.com/code.aspx?id=30768



Le problème est dans ma table qui semble mauvaise... (le fichier créé est illisible)



Le code :

AVIFileInit();//initialisation

PAVIFILE avi;



//ouverture du fichier AVI

AVIFileOpen(&avi, Name, OF_READ, NULL);

AVIFileInfo(avi, &avi_info, sizeof(AVIFILEINFO));



//Creation du stream

int streamNumber =0;

avi_stream=PAVISTREAM();

AVIFileGetStream(avi, &avi_stream, streamtypeVIDEO, 0);





PGETFRAME frame;

frame=AVIStreamGetFrameOpen(avi_stream, NULL);



unsigned char * pDIB = (unsigned char *) AVIStreamGetFrame(frame, 3);



Image test;

test.EcritureEntete(avi_info.dwHeight,avi_info.dwWidth,24);



//Lecture de la table (à ce niveau là que j'ai de serieux doutes...)

for(int i=0;i<avi_info.dwHeight*avi_info.dwWidth*sizeof(BYTE);i++)

test.PImage[i]=pDIB[i+sizeof(BITMAPINFOHEADER)];



test.Sauvegarde("test.bmp");



J'ai retirer les tests de validité du fichier pour que ça soit plus clair



Merci d'avance pour votre aide !

2 réponses

Shadiest Messages postés 20 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 2 juillet 2006
28 oct. 2005 à 18:35
J'ai trouvé l'erreur :



for(int i=0;i<avi_info.dwHeight*avi_info.dwWidth*sizeof(BYTE);i++)



for(int i=0;i<avi_info.dwHeight*avi_info.dwWidth*sizeof(BYTE)*3;i++) car il y a trois composante RVB ...



J'espere au moin que ce topic aidera quelqu'un...
3
Shadiest Messages postés 20 Date d'inscription dimanche 10 août 2003 Statut Membre Dernière intervention 2 juillet 2006
28 oct. 2005 à 18:32
P.S :

test.EcritureEntete(avi_info.dwWidth,avi_info.dwHeight,24);



Et non le contraire, ça n'enleve rien à mon
probleme mais l'image est lisible mais n'est pas correcte...
0
Rejoignez-nous