Graphique: fusion de 2 images très rapidement

Soyez le premier à donner votre avis sur cette source.

Vue 6 482 fois - Téléchargée 490 fois

Description

22/03/2003: nouvelle mise à jour (merci encore a Proger pour ses remarques). Plus rapide (une fois compilée, entre 10 et 30 ms :)

17/03/2003: mise à jour :)

09/01/2003: Nouvelle mise a jour: légèrement plus rapide et marche avec tous les modes de couleurs (changements d'api)

Voila, c'est une amélioration de la source que j'ai postée ya quelques jours... Y avait pas mal de remarques sur les possibilités d'optimisation, alors maintenant c'est fait et c'est beaucoup plus rapide... merci pour les remarques positives
@+

remarque: Voila une mise à jour encore plus rapide... Merci a Proger pour son aide...

Source / Exemple :


api utilisées

Private Declare Sub RtlMoveMemory Lib "kernel32" (refDest As Any, refFrom As Any, ByVal Longueur As Long)
Private Declare Function SetDIBits Lib "gdi32" (ByVal hdc As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
Private Declare Function GetDIBits Lib "gdi32" (ByVal aHDC As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, lpBits As Any, lpBI As BITMAPINFO, ByVal wUsage As Long) As Long

Conclusion :


Bugs: Y en a plus...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Lapou
Messages postés
30
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
11 juin 2008
1 -
Bonjour !

Quelle est la différence avec [url]http://www.vbfrance.com/code.aspx?ID=21354/url, "FUSION IMMÉDIATE DE 2 IMAGES"

Merci beaucoup
Bonne journée
cs_AntiSlash
Messages postés
61
Date d'inscription
dimanche 21 juillet 2002
Statut
Membre
Dernière intervention
23 avril 2003
-
merci, je vais y travailler quand j'aurais le temps !
rem: une fois compilée, c'est en effet plus rapide...
si ya d'autres remarques, n'hésitez pas...
Proger
Messages postés
248
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
19 décembre 2008
-
Idée : plutôt que de mettre les pixels dans une matrice (buff1, buff2, type Long) , si tu mets directement les composant r,g,b,a dans une liste de type Byte, on n'utilise plus :
- rtlmovememory pour décomposer le pixel en composante
- 2 for-next mais 1 seul
bref, economie d'appel aux api (rtlmovememory, et fornext qui est une api vb) donc gain de temps probable.
Note : il faut tester la vitesse dans la version compilé et non pas interprété par vb.
super les api getdibits et setdibits!
ah oui, dernière trouvaille : le do until ... loop est plus rapide que le for...next quand tu compiles.
Proger
Messages postés
248
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
19 décembre 2008
-
Voila :)
Sans utiliser les fonctions de base (devrais-je dire : de mer...credi) fourni par vb, on peut faire des bonnes applications.

Les APIs utilisé dans cette source sont a réutiliser pour faire votre propre utilitaire de filtre graphique : il sera difficile de faire plus rapide (on manipule les bitmap directement en mémoire, sans passer par .point ou même setpixel)
L'exemple ici est de faire une fusion de deux images, mais on peut imaginer bien d'autres actions.
cs_AntiSlash
Messages postés
61
Date d'inscription
dimanche 21 juillet 2002
Statut
Membre
Dernière intervention
23 avril 2003
-
Gorgot>> c'est normal, j'ai pas mis la fonction de reconnaissance du mode... change
Iobj = CreateBitmap(W + 1, H, 1, 32, FinalColor(0, 0))
par
Iobj = CreateBitmap(W + 1, H, 1, xxxxx, FinalColor(0, 0)) avec xxxx la valeur de ton mode de couleur... Mais je vais changer mon code pour qu'il y est plus de prob.
Anthomicro>> Je prefere les choses compliquées ! (je connaissais pas cette api)

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.