begin process at 2012 05 30 18:44:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

transformer un tableau 2d en image bitmap


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

transformer un tableau 2d en image bitmap

samedi 29 novembre 2003 à 11:01:23 | transformer un tableau 2d en image bitmap

gyzmo1

Membre Club

Bonjour a tous, voilà mon problème, je suis en train de mettre en place une méthode de comparaison de signature manuscrites. Cette méthode s applique sur la distance élastique (à titre d 'info). Mon problème est que j aimerai obtenir une image bitmap à partir de mon tableau 2d, celui ci represente un graphique correspondant à la ressemblance de deux signature. Malheureusement il y a un prb, soit au niveau de mes en têtes, soit dans ma déclaration. Qq 1 pourrait il m aider. Merci

BOOL CSignature::SaveBitmapstruct(char *nom,int **image,int NBL,int NBC)
{
FILE * pfile=fopen("test.txt","w+");
for (int i=0;i<NBL;i++)
{for (int j=0;j<NBC;j++)
{
fprintf(pfile,"%d\t",image[i][j]);
}
fprintf(pfile,"\n");
}
fprintf(pfile,"\n");fprintf(pfile,"\n");fprintf(pfile,"\n");

fclose(pfile);



CFile f;
// int h,l,dim;
BITMAP bitmap1;
BITMAPFILEHEADER bmfh;
BITMAPINFOHEADER info;
unsigned char* ptrData1= new unsigned char[NBL*NBC*3];

// BITMAPINFOHEADER bmi;
info.biSize = sizeof(BITMAPINFOHEADER); // Size of structure
info.biWidth = NBC+1; // Bitmaps width in pixels
info.biHeight = NBL+1; // Bitmaps height n pixels
info.biPlanes = 1; // Number of planes in the image
info.biBitCount = 32; // The number of bits per pixel
info.biCompression = BI_RGB; // The type of compression used
info.biSizeImage = 0; // The size of the image in bytes
info.biXPelsPerMeter = 0; // Horizontal resolution
info.biYPelsPerMeter = 0; // Veritical resolution
info.biClrUsed = 0; // Number of colors actually used
info.biClrImportant = 0; // Colors most important
//mBMI = info;




bmfh.bfType = 0x4d42; // 0x4d42 = 'BM'
bmfh.bfReserved1 = 0;
bmfh.bfReserved2 = 0;
bmfh.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
bmfh.bfOffBits = 0x36;
/*
info.biSize = sizeof ( BITMAPINFOHEADER );
info.biWidth = NBC;
info.biHeight = NBL;
info.biPlanes = 1;
info.biBitCount = 24;
info.biCompression = BI_RGB;
info.biSizeImage = 0;
info.biXPelsPerMeter = 0x0ec4;
info.biYPelsPerMeter = 0x0ec4;
info.biClrUsed = 0;
info.biClrImportant = 0;
*/
f.Open(nom,CFile::modeCreate | CFile::modeWrite);
f.Write(&bmfh,sizeof ( BITMAPFILEHEADER ));
f.Write(&info,sizeof ( BITMAPINFOHEADER ));

for( i=NBL-1;i>-1;i--)
for(int j=NBC-1;j>-1;j--)
{
*(ptrData1)=(unsigned char)image[i][j];
ptrData1++;
*(ptrData1)=(unsigned char)image[i][j];
ptrData1++;
*(ptrData1)=(unsigned char)image[i][j];
ptrData1++;

}

f.Write(ptrData1,NBL*NBC*3*sizeof(unsigned char));

f.Close();
// f.Write(input.get_ptrpixel(),bitmap1.bmHeight*bitmap1.bmWidth*3*sizeof(char));
/*for (i=0;i<NBL;i++)
for (j=0;j<NBC;j++)
fwrite(&image[i][j],1,1,fich);
fich->Close();*/
return true;
}
samedi 29 novembre 2003 à 11:08:51 | Re : transformer un tableau 2d en image bitmap

djl


tu n'a pas dit quel est ton probleme, mais aparament tu ne prend pas en compte le fait que chaque ligne doit etre ecrite par mot de 32bits, en gros si le nombre d'octet par ligne n'est pas un multiple de 4 ==> probleme!
enfin tu peut l'eviter si la largeur en pixel de ton bmp est un multiple de 4
samedi 29 novembre 2003 à 11:17:55 | Re : transformer un tableau 2d en image bitmap

gyzmo1

Membre Club

merci pour l info j ai essayé de consider la transparence. J ai essayé mais la fonction se passe sans pb mais l image n est pas disponible ou ne peut pas etre ouverte. Donc en bred je cherche une methode qui marche pour convertir un tableau 2d en image bitmap, car la mienne fait que planté et ca m ennerve.
samedi 29 novembre 2003 à 12:03:05 | Re : transformer un tableau 2d en image bitmap

djl


en fait c'est pas la transparence, c'est juste que losrque tu visualize une image, chaque ligne est lue par mot de 32 bits
par exemple si tu a une image bmp 24 bits de 15*10 (largeur=15) on a alors 15*3=45 octets par lignes, ce n'est pas un multiple de 4, tu prend alors le plus proches par exces, c'est a dire 48 . il manque donc 48-45=3 octets pour finir la ligne, tu bourre dons avec 3 octets a 0('\0' ou char(0))

et qd tu essay avec de faire un image dont la largeur est un multiple de 4(12*15 par ex) ca devrai marcher, sinon regarde du coté de l'entete
samedi 29 novembre 2003 à 12:07:54 | Re : transformer un tableau 2d en image bitmap

gyzmo1

Membre Club


ok, j avais pas penser au bourrage, je te remercie et je vais essayer de suite. Merci pour l info
samedi 29 novembre 2003 à 13:29:51 | Re : transformer un tableau 2d en image bitmap

gyzmo1

Membre Club

merci djl, la bitmap peut être ouverte dorénavant, maintenant j ai plus qu a résoudre mon problème d'enregistrement des pixels car il sort pas l image désirée. Mais ca va le faire. encore merci.


Cette discussion est classée dans : int, image, char, unsigned, ptrdata1


Répondre à ce message

Sujets en rapport avec ce message

need help_API - debutant. [ par JimyRyan ] j'ai cree un progamme qui affiche une image (stoquee dans un fichier .bmp), et une phrase (lu a partir d'un fichier TXT), j'ai deux problemes : une fo pb de retour( du tableau) de ma fonction [ par airwann ] bonjour,j ai un problème comment dois je modifier l'entête de ma fonction pour recupérer le tableau de structure 3 d alloué dynamiquementmerci d avanc pb de progr [ par airwann ] bonjour,j ai un pb ds mon code (je ne suis pas un expert) mais là je ne vois pas ou ça plante ..////////////////////////////////////////////////////// Question idiote a propos des tableaux 3D [ par boulfrite ] Salut...J'ai une question un peu idiote : Est-ce que unsigned char image [256][256][3];est la meme chose que<table border= comment afficher un pixel en VGA ? [ par LedPaL ] Slt,je programme ac dev-cpp et j'arrive pas a afficher de pixels a l'écran !!! de l'aide plz !!voici un bout de ma source:unsigned char * ecran = (uns Comment forcer le RTS pour une liaison RS232 [ par ancat ] Bonjourje viens de faire un petit prog (grandement inspire de sources du site) mais je ne saisis pas trop le controle du RTS.Celui ci est-il traite pa Pointeurs et Desallocation [ par gilimcce ] Bonjour à tous....je declare une fonctionloadJpegImage(char *, unsigned char*, int*, int*)1e parametre : le chemin de l'image chargee2e // Problème de mapping après alloc dynamique [OGL] [ par gilimcce ] Désolé de remettre ce sujet, mais le suicide est proche....Si quelqu'un y comprend qq chose....Je suis revenu a quelque chose de basique :un pointeur Affichage image. [ par talaron ] Mon problème est le suivant : J'ai une librairie de traitement d'images en mode console et j'aimerais afficher une image BMP 24bits toute bete.J'ai do Problème en tête bitmap [ par piroman14 ] Slt tt le monde!Je rencontre un petit problème dans mon algorithme. En effet, je n'arrive pas à coder l'en-tête d'une image bitmap correctement. J'obt


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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 : 3,541 sec (3)

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