Découpage de feuille 1.0 : comparatif des fonctions getpixel et getdibits

Soyez le premier à donner votre avis sur cette source.

Vue 4 623 fois - Téléchargée 710 fois

Description

Cette source vous permet de comparer la vitesse d'éxécution des fonctions API GetPixel et GetDIBits, et vous verez que les résultats obtenus par la seconde sont nettement meilleur !
Pour ceux qui utilise la fonction GetPixel pour créer des régions, vous verez très vite l'apport de vitesse qu'apporte l'utilisation de la fonction GetDIBits !

Le découpage se fait sur une image tracée "à la main" : un simple texte en fait ! Cela permettra de montrer comment faire à ceux qui ne savent pas comment découper une feuille, et un petit benchmark aux autres ;-)

Résultats du comparatif sur un Athlon XP 2500+ :
2s environ en utilisant la fonction GetPixel
500 ms en utilisant la fonction GetDIBits

Ces résultats sont déjà assez différents sur une image de taille moyenne, alors je vous laisse imaginer le gain de temps sur une très grande image !

Source / Exemple :


' Le code étant un peu long, il vaut mieux télécharger le zip !

Conclusion :


Aucune mise à jour n'est prévue pour le moment car il ne s'agit que d'un programme de comparatif.
Niveau bugs, j'en ai pas trouvé pour le moment, mais ce n'est pas à exclure !

Je tiens à préciser qu'il s'agit d'un programme vite fait sans prétention

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
32
Date d'inscription
mercredi 17 mars 2004
Statut
Membre
Dernière intervention
24 novembre 2004

Par contre je trouve bizarre que le temps varie autant d'un essai à l'autre : la méthode GetDIBit n'arrete pas d'être soit à 500ms soit à 2s500ms ce qui fait quand meme du simple au quintiple !

Est-ce que ca le fait chez vous ?

Arnor
Messages postés
32
Date d'inscription
mercredi 17 mars 2004
Statut
Membre
Dernière intervention
24 novembre 2004

Et vous connaissez la méthode Point qui s'applique sur les form et les PictureBox ?

Je l'ai testé avec ce comparatif et j'obtiens entre 7 et 5 secondes sur mon AthlonXP 1800+ contre 4 secondes pour le getpixel par exemple...

Donc d'après moi c'est à éviter, mais vous pouvez faire le test chez vous : il suffit de remplacer la ligne
If GetPixel(PCT_IMAGE.hDC, LNG_for1, LNG_for2) = LNG_Couleur_Transparence Then
par la ligne
If PCT_IMAGE.Point(LNG_for1, LNG_for2) = LNG_Couleur_Transparence Then

Voila, ce serait bien que vous le testiez aussi pour voir ce que ca donne sur les P4 par exemple.

Arnor
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
104
Ah ! Pourrais-tu être un peu plus précis stp pcpunch ? C'est quoi qui ne marche pas ?

DarK Sidious
Messages postés
1247
Date d'inscription
mardi 7 mai 2002
Statut
Membre
Dernière intervention
18 février 2019
3
En tous cas chez moi, marche pas avec un bmp!!!!!
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
104
Je te remercie de ces précisions Mehdibou, et tu as amplement raison : la fonction GetBitmapBits est devenue obsolète et tend à être remplacée par la fonction GetDIBits, donc finalement, j'ai fait avec la bonne fonction ;-)

Pour la fonction SetPixelV, je suis d'accord avec toi, elle est plus rapide que la fonction SetPixel classique, mais je n'utilise pas la fonction SetPixel dans ma source, uniquement GetPixel pour récupèrer la couleur des pixels pour la deuxième méthode de découpage.

DarK Sidious
Afficher les 9 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.