begin process at 2010 09 06 06:48:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Autres asm

 > 

afficher une image jpeg avec la fonction StretchDIBits ?


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

afficher une image jpeg avec la fonction StretchDIBits ?

dimanche 5 mars 2006 à 21:54:55 | afficher une image jpeg avec la fonction StretchDIBits ?

mitch19

bonjour, j'essaye depuis quelques temps d'afficher une image jpeg avec
la commande  StretchDIBits, en vain ! mon programme plante lamentablement !
Si quelqu'un peut m'aider !
merci
mon code :
 
fichier db "photo1.jpg",0
bv4H BITMAPV4HEADER <>

.data ?
hPhoto dd ?
pPhoto dd ?
pJpeg dd ?
Largeur dd ?
Hauteur dd
.elseif uMsg == WM_COMMAND
     mov eax,wParam
     .if eax == IDM_OPEN
            
             invoke BitmapFromFile,offset fichier             ;ouvre fichier
             mov hPhoto, eax
     INVOKE GetObject, hPhoto, SIZEOF bv4H, ADDR bv4H ;  information image
;la déja eax=0 donc j'ai rien récupéré!
             mov pPhoto,eax                                   ;sauve sur pointer
             mov eax,bv4H.bV4V4Compression
             mov pJpeg,eax                                    ;récupère la compression
             mov eax,bv4H.bV4Width
             mov Largeur,eax                                  ;sauve largeur image
             mov eax,bmih.bV4Height
             mov Hauteur,eax                                  ;sauve hauteur image
       
             invoke InvalidateRect,hWnd,NULL,TRUE             ;repeindre la fenetre
  
       .endif

.elseif uMsg==WM_PAINT
      invoke BeginPaint,hWnd,addr ps
      mov hMemDC,eax
      invoke  SetStretchBltMode, hMemDC, COLORONCOLOR
      invoke  StretchDIBits, hMemDC, 0,0, cxClient, cyClient, 0,0,Largeur,Hauteur, \
         pJpeg, pPhoto, DIB_RGB_COLORS, SRCCOPY
....

dimanche 5 mars 2006 à 22:42:56 | Re : afficher une image jpeg avec la fonction StretchDIBits ?

BruNews

Administrateur CodeS-SourceS
Je t'ai fait exemple en C ici, tu verras pour traduire en (pseudo) asm, pas le temps.
[ Lien ]
Une dialogbox repaint sa surface avec, alternativement par timer, 3 images (jpg, gif et bmp).

ciao...
[ Lien ]
BruNews, MVP VC++
lundi 6 mars 2006 à 20:34:58 | Re : afficher une image jpeg avec la fonction StretchDIBits ?

mitch19

merci, je vais épelucher ton code !
et désolé pour le pseudo assembleur !
lundi 6 mars 2006 à 21:28:05 | Re : afficher une image jpeg avec la fonction StretchDIBits ?

mitch19

Le code qui marche en masm32 merci BruNews

fichier db "photo1.jpg",0
bmih BITMAP <>

.data ?
hPhoto dd ?
hPhotoCopy dd ?
Largeur dd ?
Hauteur dd ?
.elseif uMsg == WM_COMMAND
     mov eax,wParam
     .if eax == IDM_OPEN
            
             invoke BitmapFromFile,offset fichier             ;ouvre fichier
             mov hPhoto, eax
             invoke CopyImage,hPhoto,IMAGE_BITMAP,0,0,/
             LR_COPYRETURNORG             
                mov hPhotoCopy,eax

            INVOKE GetObject, hPhotoCopy, SIZEOF bmih, ADDR bmih ;  information image
             mov eax,bmih.Width
             mov Largeur,eax                                  ;sauve largeur image
             mov eax,bmih.Height
             mov Hauteur,eax                                  ;sauve hauteur image
       
             invoke InvalidateRect,hWnd,NULL,TRUE             ;repeindre la fenetre
  
       .endif

.elseif uMsg==WM_PAINT
 invoke BeginPaint,hWnd,addr ps
 mov hdc,eax
 invoke CreateCompatibleDC,hdc
 mov hMemDC,eax
 invoke SelectObject,hMemDC,hBitmap
 mov hOld, eax
invoke GetClientRect,hWnd,addr rect
 invoke StretchBlt, hdc, 0, 0,cxClient, cyClient, hMemDC, 0, 0, cxDib,/
 cyDib, SRCCOPY

lundi 6 mars 2006 à 21:47:36 | Re : afficher une image jpeg avec la fonction StretchDIBits ?

BruNews

Administrateur CodeS-SourceS
On peut parier au moins à 100 contre 1 que le compilo de VS aura produit un code nettement meilleur.
Regarde tous les accès mémoire que tu forces inutilement:
...
mov hdc,eax
invoke CreateCompatibleDC,hdc
mov hMemDC,eax
...
à chaque ligne tu vas relire en mémoire ce que tu as déjà en registre, dur dur...
Je te garantis qu'un bon compilo C moderne sait utiliser tous les registres pour ne jamais avoir à faire cela.

ciao...
[ Lien ]
BruNews, MVP VC++
mardi 7 mars 2006 à 11:22:54 | Re : afficher une image jpeg avec la fonction StretchDIBits ?

patatalo

Membre Club Administrateur CodeS-SourceS
salut, sans parler de pari et pour ne pas avoir de compilo c moderne à la maison ( ça coûte combien ? ), j'aimerais voir le code obtenu. Je ne sais pas avec quoi sont programmés les logiciels d'aujourd'hui mais je n'ai jamais rien vu d'optimisé sortant d'un compilo C. Pas meme le ntkrnlmp: push ebx push esi push dword ptr [ebp+0Ch] push dword ptr [ebp-4] push dword ptr [ebp+8] call fn_0043D298 mov edi,eax <- c quoi ça, c'est de l'utilisation de tout les registres ? cmp edi,ebx jge loc_005434A9 @++
mardi 7 mars 2006 à 11:45:57 | Re : afficher une image jpeg avec la fonction StretchDIBits ?

BruNews

Administrateur CodeS-SourceS
Bon exemple, son hMemDC placé dans EDI aurait été très bien...

Décompile l'exe du lien et regarde, j'ai vraiment mieux à faire.

ciao...
[ Lien ]
BruNews, MVP VC++
mardi 7 mars 2006 à 15:42:55 | Re : afficher une image jpeg avec la fonction StretchDIBits ?

patatalo

Membre Club Administrateur CodeS-SourceS
bon exemple, ca aurait été optimisé si: push ebx push esi push dword ptr [ebp+0Ch] push dword ptr [ebp-4] push dword ptr [ebp+8] call fn_0043D298 mov edi,eax cmp eax,ebx jge loc_005434A9 @++
mardi 7 mars 2006 à 15:51:02 | Re : afficher une image jpeg avec la fonction StretchDIBits ?

patatalo

Membre Club Administrateur CodeS-SourceS
puis faudrait voir a lire ce qui est noté plutot que de nous faire une pirouette: "et pour ne pas avoir de compilo c moderne à la maison" @++
mardi 7 mars 2006 à 20:32:49 | Re : afficher une image jpeg avec la fonction StretchDIBits ?

BruNews

Administrateur CodeS-SourceS
VC++ 2005 Express gratuit sur le site de MS.

ciao...
[ Lien ]
BruNews, MVP VC++

1 2

Cette discussion est classée dans : image, mov, dd, invoke, eax


Répondre à ce message

Sujets en rapport avec ce message

Aidez moi à traduire une petite fonction assembleur en C (API Windows) [ par skirby ] Bonjour à tous, J'essaye désespérément de traduire une fonction ASM en C. Le but de cette fonction est de pouvoir utiliser une ressource compilé dans Une mémoire "read" [ par msteve ] Bonsoir, Je suis débutant et j'ai recopié un programme test. Je parviens à l'assembler, puis à créer un .exe ; quend je lance l'exe j'obtiens la boîte Recherche de fichier recursif [ par maximus4 ] Bonjour, j'ai la procédure suivante pour la recherche récursive, le résultat est stocké dans un fichier texte. [code=autre]invoke CreateFile,offset fi out bmp [ par vincent2795 ] Bonjour, dans ma source, j' essaye de faire un screenshot, et de le nommer pas la date et l' heure ou il es pris. mon problème: si le nom du fichier e comment utiliser une chaine de caractères stockée dans un fichier ressource ? [ par parki ] Bonjour,je n'arrive pas à utiliser une chaine de caractère stockée dans un fichier ressources. (je sais qu'on peut s'en passer mais j'aime bien compre nombre premier en nasm [ par YAWLY ] MED.MERZOUG salut tout le monde vous pouvez m'aider si j le compile sa affiche chaque fois le nbr est non premeir > le code est : Section .date ch Aligner des données pour le SSE [ par epineurien ] Bonjour à tous !J'ai un petit problème avec du code dont je mesure la vitesse: suivant la compilation, la vitesse varie du simple au double .J'expliqu Probleme de compilation [ par noel70 ] Bonjour a tous.voila, sur une fenetre, j'ai mis un bouton, et quand j clique sur ce bouton, j'aimerais faire apparaitre une autre fenetre.Alors ce que inverser une chaine [ par MrdJack ] salut, je suis sur un projet de calculatrice me permettant de faire des calculs avec des nombres tres grands. chaque nombre est stocké dans la memoire [linux] read and open [ par sheorogath ] Bonjour,je débute un peu en assembleur et j'essaie de faire un programme qui lit le début d'un fichier dont le nom est entré par l'utilisateur.Voici l


Nos sponsors


Sondage...

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

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

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