Dks_gestion_image 1.0 : accèlèrer le traitement des images : 30 fois plus rapide !

Description

Ce module de classe vous permet d'accèlèrer le traitement des pixels sur une image complète. Le gain est de l'ordre de 30 à 35 fois plus rapide sur un Athlon XP 2400+ ! Cependant, le gain est surtout réel pour le traitement d'une image complète et non quelques pixels ! En plus, ce gain est obtenu pour un programme compilé, et non lorsque le programme est éxecuté sous VB (à ce moment là, le gain retombe à environ 5 fois plus rapide).

En fait, les fonctions de la classe s'utilisent presque aussi simplement que les fonctions API GetPixel et SetPixel à quelques différence : il faut tout d'abord lui donner le DC contenant l'image à manipuler :
Dim OBJ_Image As New CLS_GESTION_IMAGE 'stocke l'objet de gestion d'image
Call OBJ_Image.Image(Picture1.hdc, Picture1.ScaleHeight, Picture1.ScaleWidth)

Ensuite, il suffit d'appeler les fonctions GetPixel et SetPixel de cette façon :
LNG_Couleur = OBJ_Image.GetPixel(LNG_for1, LNG_For2)
Call OBJ_Image.SetPixelRGB(LNG_for1, LNG_For2, vbBlue)

Bien entendu, il y a un truc pour obtenir une meilleure performance que les fonctions API : j'évite de charger à chaque fois l'image lors d'un GetPixel contrairement à la fonction GetPixel de l'API, et j'évite de raffraichir l'affichage contrairement à la fonction SetPixel de l'API, d'où ces résultats !

De plus, la version RGB de SetPixel est encore plus rapide car le calcul pour obtenir les composantes RGB n'est plus nécéssaire !

Cette classe est très intéressante pour des programmes de retrouches graphiques, car ca permet de faire des manipulations sur les pixels d'une image très rapidement !

Mise à jour de cette source pour rajoutter un fonction GetPixelRGB qui est plus rapide que la fonction GetPixel, ainsi que la correction d'un bug au niveau de l'autosize d'un picturebox.
Mise à jour à nouveau de cette source pour corriger quelques bugs : avec l'ancienne version, certains pixels n'était pas à la bonne place si les picturebox avait une bordure !
Nouvelle mise à jour pour optimiser la compilation : on y gagne pas mal ! De plus, j'ai enlever les routine de traitements d'erreurs pour y gagner encore plus ! Dorénavant, ca tombe en dessous des 70 ms ! Elle devient donc de plus en plus rapide, mais attention : dorénavant, les erreurs ne sont plus gérées (vous pouvez très bien remettre la gestion des erreurs en enlevant les commentaires dans le code), donc gare au crash du prog !

Source / Exemple :


'all in the zip

Conclusion :


Cette classe va me permettre de faire progresser les projets que j'ai déjà mis en ligne, et d'en faire de nouveaux pour des applications graphiques.

Codes Sources

A voir également

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.