Fxmeister - revolution de la retouche d'image sur vbfrance

Soyez le premier à donner votre avis sur cette source.

Vue 6 439 fois - Téléchargée 1 133 fois

Description

Ce logiciel est un logiciel de retouche graphique... mais différent de ceux déjà présents sur VBFrance, en effet celui ci utilise des APIs différentes permettant de décupler la rapidité des filtres graphiques. De plus il implémente de nouveaux effets (convolution, dégradé...), son but est toutefois principalement éducatif...

Son but principal est de vous montrer comment utiliser les API GetDIBits et SetDIBits pour créer des effets graphiques. Sur VBFrance, tous les effets graphiques sont réalisés à l'aide des fonctions GetPixel et SetPixel, qui sont particulièrement lentes. Ce programme vous montre donc comment réaliser des effets graphiques rapides et efficaces. Les effets Contraste, Saturation, Noir et Blanc, Diffusion, Derrière une vitre, Inverser les couleurs, sont là dans un but éducatif, pour vous montrer comment utiliser ces APIs.

Le logiciel montre ensuite comment faire des effets par produit de convolution. Le principe est expliqué dans le code, cela permet de faire à peut près tous les effets de base proposés par PaintShop, comme le flou, le Sharpen, le traçage de contour, la mise en relief, et bien d'autres encore, il suffit de connaitre leur matrice de convolution. Le logiciel propose quelques matrices de convolution basiques, vous pouvez en trouver d'autres sur internet.

J'ai aussi implémenté un effet de dégradé assez complet, bien qu'il subsiste encore un bug (pas grand chose, il est noté dans le code mais l'algorithme en lui même ne contient aucun bug), le logiciel est fournit avec quelques dégradés de base, vous pouvez aussi créer les votres.

Le logiciel montre enfin comment utiliser correctement la fonction StretchBlt (dans le code j'utilise setDIBits mais ça revient au même), IL FAUT faire un appel à setStretchBltMode avant l'appel, sinon le rendu est particulièrement moche pour des redimensionnements importants. l'appel de ces deux fonctions remplace avec brio la fonction PaintPicture de VB (que je ne recommande pas d'utiliser... particulièrement lente)

Le logiciel n'implémente pas d'autres effets graphiques volontairement, les autres sont en grande partie déjà présent sur VBFrance et sur Internet et je vous laisse le soin de les ajouter grace aux APIs SetDIBits et GetDIBits.

Pour toute suggestion ou question, vous pouvez me contacter à l'adresse polo18623@hotmail.com ou directement sur VBFrance.

J'espere que ce code pourra vous aider...
Progmeister

Source / Exemple :


Public Sub AllisintheZip(filename as String)
  Dezip(filename)
End Sub

Conclusion :


Le zip ne contient pas de .exe mais je vous conseil de le compiler pour apprécier
sa vitesse.

Merci de laisser vos commentaires...

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
14762
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
24 janvier 2021
151
Par ce que cette source date de 2005.
Ahhhhh pourquoi VB6 ? Quelle horreur.. Rrrrrrr
Messages postés
37
Date d'inscription
vendredi 27 mai 2005
Statut
Membre
Dernière intervention
3 décembre 2007

Peut-on m'expliquer en détail chaque parametre de GetDIBits,svp?
Messages postés
1
Date d'inscription
mercredi 29 juin 2005
Statut
Membre
Dernière intervention
29 juin 2005

Merci Progmeister pour ce bon code d'utilisation de SetDIBits.
Messages postés
224
Date d'inscription
samedi 25 janvier 2003
Statut
Membre
Dernière intervention
17 juin 2006

@MoiOlivier:
L'utilisation est Long rend les algos plus rapides car le Long est de 32 bits et nos processeurs (pour la plupart) sont 32 bits et sont donc optimisés pour etre au plus rapide avec ces valeurs ! celà explique pourquoi un long est plus rapide qu'un integer ou meme qu'un byte !!!

@Progmeister:
pas mal mais tu pourrais accélérer en cochant les cases pour optimiser la rapidié comme le dit MoiOlivier et surtout NE PAS UTILISER de progressbar !!! la progressbar il faut la rafraichir à intervals réguliers sinon tu perds énormément de temps !!!

et juste une petite astuce aussi quand tu inverse l'image. le calcul c'est effectivement NouvelleComposanteDeCouleur = 255 - AncienneComposanteDeCouleur

mais il s'agit de byte, donc d'octet et celà revient au même résultat de faire NouvelleComposanteDeCouleur = Not AncienneComposanteDeCouleur

sauf que c'est plus rapide pour le processeur =)

bonne continuation
Afficher les 11 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.