[MFC] Bitmap

Bitmap [MFC] - C++ - Programmation

Marsh Posté le 11-03-2005 à 23:24:11    

Bonjour, je souhaite afficher une image que je charge avec le MFC mais ji arrive vraiment pas !!
Je charge limage(limage est sous la forme RGBRGBRGB...) :  

Code :
  1. ifstream file("res/lenna.ppm",ios::in | ios::binary);
  2. if(file)
  3. {
  4. string t;
  5. int nc,nl;
  6. file>>t>>nc>>nl>>t;
  7. unsigned char *data(new unsigned char[nc*nl*3]);
  8. file.read((char*)data,nc*nl*3);
  9. CPaintDC dc(this); // contexte de périphérique pour la peinture
  10. CBitmap Bitmap;
  11. CDC MemDC;
  12. //Bitmap.LoadBitmap(IDB_BITMAP1); // lecture bitmap dans les ressources
  13. if(Bitmap.CreateBitmap(nc,nl,3,8,sImage))
  14. AfxMessageBox("okk" );
  15. else
  16. AfxMessageBox("fé chier" );
  17. BITMAP InfosBmp; // structure d'informations.
  18. Bitmap.GetBitmap(&InfosBmp);
  19. MemDC.CreateCompatibleDC(&dc);// creation d'un DC en memoire
  20. MemDC.SelectObject(&Bitmap); // selection du bitmap dans le DC en  
  21. // transfert final du bitmap dans le dc de la view.
  22. dc.BitBlt( 0,0,InfosBmp.bmWidth, InfosBmp.bmHeight,&MemDC,0,0,SRCCOPY);
  23. delete data;
  24. }


 
Mais cela ne marche pas !! pouvez vous me dire pourquoi et comment faire ca seré cool !
 
Merci
 

Reply

Marsh Posté le 11-03-2005 à 23:24:11   

Reply

Marsh Posté le 11-03-2005 à 23:47:31    

tu dessines dans quoi là ? un CPictureBox ? c'est le CPaintDC de quoi que tu utilises ?


Message édité par Harkonnen le 11-03-2005 à 23:48:07

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 12-03-2005 à 09:28:44    

La je suis dans la fonction onPaint de ma boite de dialogue !!

Reply

Marsh Posté le 12-03-2005 à 09:41:30    

utilise la fonction LoadImage() pour charger l'image, passer par un ifstream ne marchera pas


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 12-03-2005 à 10:19:35    

Comment ca se fait ? car la fonction CreateBitmap existe je voit pas pourquoi !  
le probleme est que mon image ke je veut lui faire afficher sera toujours un tableau 1d de unsigned char !!!
 
Par exemple la je laod une image ppm donc je pense pas que loadImage me permette de charger ce type de format !!


Message édité par dickymoe le 12-03-2005 à 10:20:02
Reply

Marsh Posté le 12-03-2005 à 10:33:41    

dickymoe a écrit :

Comment ca se fait ? car la fonction CreateBitmap existe je voit pas pourquoi !


parce que c'est comme ça !
pour charger une image à partir d'un fichier, y'a une fonction qui s'appelle LoadImage(), donc il faut l'utiliser, à moins que tu sois capable de décoder et d'afficher octet par octet les différents formats d'images !
quant à CreateBitmap(), ça n'a rien à voir : ça sert à intialiser des bitmaps en mémoire, mais ils ne contiennent aucune donnée
http://msdn.microsoft.com/library/ [...] dimage.asp
 

dickymoe a écrit :


le probleme est que mon image ke je veut lui faire afficher sera toujours un tableau 1d de unsigned char !!!


oui et alors ?
 

dickymoe a écrit :


Par exemple la je laod une image ppm donc je pense pas que loadImage me permette de charger ce type de format !!


tu ferais mieux d'utiliser un autre format d'image


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 12-03-2005 à 10:36:58    

tu peut pas de donner un exemple de construction de bitmap a partir du UCHAR[] (puis lafficher si possible) !
 
car la jé regardé mais ej voit pas comment faire !!

Reply

Marsh Posté le 12-03-2005 à 10:46:45    

t'as du mal toi hein...  
tu connais la notion de format d'image ? en gros, chaque image est formatée selon un format précis (BMP, JPG, etc...) à des fins de compression la plupart du temps.
si tu remplis un tableau de UCHAR avec ces données, tu obtiendras les données "brutes" de l'image, c'est à dire incompréhensibles et inaffichables sans décodage.
ce décodage est effectué par LoadImage(), donc ta méthode n'est pas la bonne .|


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 12-03-2005 à 11:15:51    

on va se calmer papie ! Tu me prend pour koi ? je commence en MFC mais pas en imagerie !!  
 
pour faire du traitement dimage on traite les données, les décoder et obtenir le tableau de pixel ca ji arrive suis pa si neuneu ke ca !
 
mon probleme c laffichage ! par le récuperation des donnée !

Reply

Marsh Posté le 12-03-2005 à 11:40:19    

Il y a un truc qui me tracasse dans le chargement de ton PPM ...
Dans une doc sur ce format, je vois que les triplets RGB sont au format 'r[espace]g[espace]b[return ou tab ou espace](triplet suivant)...etc etc' ...
Mais tu ouvres ton fichier en mode binary ..
Ta fonction 'file.read((char*)data,nc*nl*3);' va lire le fichier byte par byte et le foutre dans ton tableau data ... incluant tous les caractères du fichier même ceux qui n'ont rien à voir avec les triplets RGB !
non ?
En plus, où utilise-tu ton tableau data après la lecture ???
 

Reply

Marsh Posté le 12-03-2005 à 11:40:19   

Reply

Marsh Posté le 12-03-2005 à 12:21:16    

dickymoe a écrit :

on va se calmer papie ! Tu me prend pour koi ? je commence en MFC mais pas en imagerie !!


c'est toi qui va te calmer, si tu n'as pas envie de te retrouver chez les télétubbies et ton topic effacé, hein [:heink]
 

dickymoe a écrit :


mon probleme c laffichage ! par le récuperation des donnée !


mais borné jusqu'au bout hein....
je te le répète une dernière fois : si tu récupères les données en binaire brut, tu n'afficheras rien du tout !!!
 

Mr Mala a écrit :


Ta fonction 'file.read((char*)data,nc*nl*3);' va lire le fichier byte par byte et le foutre dans ton tableau data ... incluant tous les caractères du fichier même ceux qui n'ont rien à voir avec les triplets RGB !
non ?


si, c'est ce que je me tue à lui dire depuis le début :spamafote:
 

dickymoe a écrit :


En plus, où utilise-tu ton tableau data après la lecture ???


je suppose qu'il avait un peu de RAM en trop [:ddr555]


Message édité par Harkonnen le 12-03-2005 à 12:21:31

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 12-03-2005 à 13:01:57    

Pour la lecture de se fichier faite mon confiance elle est bonne (si vous voulé pas entierement car le premier caractère est incorrecte bref je c pk mé la né pa le probleme) !
 
Il y a deux format de ppm, le P5 etle P6 (normalement) ! moi c du P6 ou il y a l'entete style :
P6
256 256
255
RGBRGBRGBRGB... et les RGBRGBRGB est tt a la suite et en binaire !!
 
la lecture de nimporte kel format je m'en fou je veut pouvoir afficher une bitmap a partir d' UCHAR* dans lekel ya rgrgbrgb a la suite !

Reply

Marsh Posté le 12-03-2005 à 13:06:10    

le format P5 c'est pas du ppm mais du pgm :o


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 12-03-2005 à 13:06:35    

dickymoe a écrit :

Pour la lecture de se fichier faite mon confiance elle est bonne (si vous voulé pas entierement car le premier caractère est incorrecte bref je c pk mé la né pa le probleme) !
 
Il y a deux format de ppm, le P5 etle P6 (normalement) ! moi c du P6 ou il y a l'entete style :
P6
256 256
255
RGBRGBRGBRGB... et les RGBRGBRGB est tt a la suite et en binaire !!
 
la lecture de nimporte kel format je m'en fou je veut pouvoir afficher une bitmap a partir d' UCHAR* dans lekel ya rgrgbrgb a la suite !


 
Oui d'accord ok tu utilises une ppm format binaire ( information que tu n'avais pas donné ! [:spamafote] )
 
Maintenant, réponds à ma question : où utilises-tu 'data' ???


Message édité par Mr Mala le 12-03-2005 à 13:07:28
Reply

Marsh Posté le 12-03-2005 à 13:10:44    

Excuse moi jé oublié de répondre a ta question  :wahoo:  
en faite dans le code mit ya une erreur je lutilise a la place de sImage dans CreateBitmap

Reply

Marsh Posté le 12-03-2005 à 13:10:57    

Citation :

ifstream file("res/lenna.ppm",ios::in | ios::binary);


 
tu connais l'imagerie numérique mais tu commence apparement :D
 
et puis "lenna n'est pas bonne :o" (© Axel)


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 12-03-2005 à 13:19:52    

Citation :

tu connais l'imagerie numérique mais tu commence apparement :D


 
pourquoi ?

Reply

Marsh Posté le 12-03-2005 à 13:23:00    

lenna est la premiere image que l'on traite parce qu'elle est historiquement connue mais franchement on sait pas faire grand chose avec :o


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 12-03-2005 à 13:37:23    

la né pas le probleme !! ce ke je veut c afficher cette image ou une autre !!

Reply

Marsh Posté le 12-03-2005 à 13:40:08    

bha lis les réponses qu'on t'a donné !!


Message édité par KangOl le 12-03-2005 à 13:40:20

---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 12-03-2005 à 13:47:27    

KangOl a écrit :

lenna est la premiere image que l'on traite parce qu'elle est historiquement connue mais franchement on sait pas faire grand chose avec :o


[:kiki]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 12-03-2005 à 13:48:55    

plait-il ?


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 12-03-2005 à 13:49:57    


Qu'est-ce que tu veux faire qui n'ets pas faisable avec lenna? [:itm]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 12-03-2005 à 13:53:15    

bha essaye kirsh, les résultats sont pas tres parlants :/


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 12-03-2005 à 13:58:55    

Ca fonctionne, non? Le résultat est peut-être pas utile, mais il existe...:o
Bref, perso j'utilise quasiment toujours lenna pour faire des tests de ce que je code...
Je vois pas en quoi ça voudrait dire qu'il commence tout juste l'imagerie numérique ou quoi que ce soit par rapport à ses compétences. [:skeye]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 12-03-2005 à 13:59:07    

bon, mauvais exemple avec kirsh (ca fait longtemps...)
 
http://img71.exs.cx/img71/9882/lena_kirsh.th.png


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 12-03-2005 à 14:00:33    

[:rofl]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 12-03-2005 à 14:02:44    

ho ca va :o


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 12-03-2005 à 14:40:13    

KangOl a écrit :

bon, mauvais exemple avec kirsh (ca fait longtemps...)
 
http://img71.exs.cx/img71/9882/lena_kirsh.th.png


Ca donne quand même un truc bizarre, on a l'impression que ce qui est dans la réalité son épaule droite (et qui est devant son menton) est (après kirsh) sont épaule gauche, et est contre le mirroir.
 
Ca donne l'illusion qu'elle a un super long coup tendu vers l'avant [:moule_bite]  
(avec les cheveux qui donnent une espèce d'illu "coup de giraffe)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 12-03-2005 à 14:45:28    

masklinn a écrit :

Ca donne quand même un truc bizarre, on a l'impression que ce qui est dans la réalité son épaule droite (et qui est devant son menton) est (après kirsh) sont épaule gauche, et est contre le mirroir.
 
Ca donne l'illusion qu'elle a un super long coup tendu vers l'avant [:moule_bite]  
(avec les cheveux qui donnent une espèce d'illu "coup de giraffe)


 
Par contre, je ne connaissais pas l'original  
http://www.tecn.upf.es/~emeinhardt/lenna_original.jpg
:D

Reply

Marsh Posté le 12-03-2005 à 15:18:19    

tiens moi non plus !


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 12-03-2005 à 15:20:06    

KangOl a écrit :

tiens moi non plus !


 
.. et du coup qu'elle était playmate novembre 1972 ..
http://en.wikipedia.org/wiki/Lenna

Reply

Marsh Posté le 12-03-2005 à 15:21:33    

Mr Mala a écrit :

.. et du coup qu'elle était playmate novembre 1972 ..
http://en.wikipedia.org/wiki/Lenna


ca par contre je savait
photo scannée depuis un playboy :D


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 12-03-2005 à 15:24:42    

ya son site www.lenna.org pour ce ki veullent ya encore une autre image pas mal ;) !!
 
en attandant jarrive toujours pas a afficher ce p$^"'ù de tableau de UCHAR

Reply

Marsh Posté le 13-03-2005 à 15:04:58    

Bon je vais allé me renseigner sur un autre forum car vous mavé pas franchement aidé !!

Reply

Marsh Posté le 13-03-2005 à 15:12:37    

[:spamafote] si tu avais écouté ce qu'on t'a dit dans les première réponses ........ tu ne l'as pas fait, c'est parti en couille .. c'est normal .......

Reply

Marsh Posté le 13-03-2005 à 19:53:27    

dickymoe number 1 sur les boulets  ;)


Message édité par dreamkiller le 13-03-2005 à 19:54:07
Reply

Marsh Posté le 30-06-2005 à 09:32:43    

C vous les boulets vous savez meme pas répondre a une question vous préferez contournez le sujet, alors faites pas croire kon vous savez des trucs ! Quand on c pas répondre on ferme sa guele !! Hein les loks ?

Reply

Marsh Posté le 30-06-2005 à 11:45:30    

Je profite du fil (puisque c'est en rapport avec les Bitmaps et MFC donc):
 
Pourquoi quand j'utilise un CImageList sur un bitmap 24 bits ou 256 couleurs, le rendu avec CImageList.Draw() se fait en 16 couleurs (dégradées qui plus est). Quelque chose lié à la palette?
 
Par contre si je fais un CBitmap.LoadBitmap() suivi d'un CDC.BitBlt() le résultat est OK.
 
Explications SVP?
 
Harkonnen: as tu jeté un coup d'oeil à mon post sur DDX/DDV? Si tu ne souhaites pas continuer le fil, dis le moi STP.


Message édité par slash33 le 30-06-2005 à 11:47:29
Reply

Marsh Posté le 30-06-2005 à 15:56:39    

Je suis d'accord avec dickymoe, vous êtes vraiment des boulets !!!
Vous avez franchement rien compris.
Mais ce que je préfère c'est quand vous lui dites que c'est un
débutant. Ce qui à mon avis, n'est pas tout à fait le cas. Le débutant
n'est pas celui qu'on croit ici !  :pt1cable:
 
T'as bien raison dickymoe, change de forum, ici y a qu'des merdes !!!

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed