Graphique: fusion de 2 images très rapidement

0/5 (8 avis)

Vue 6 919 fois - Téléchargée 530 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
28 juil. 2004 à 14:40
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
20 mars 2003 à 22:13
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
19 mars 2003 à 16:02
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
1 déc. 2002 à 21:31
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
30 nov. 2002 à 11:13
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)
Afficher les 8 commentaires

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.