Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

FXMEISTER - REVOLUTION DE LA RETOUCHE D'IMAGE SUR VBFRANCE


Information sur la source

Catégorie :Graphique Niveau : Expert Date de création : 27/03/2005 Date de mise à jour : 27/03/2005 19:17:10 Vu / téléchargé: 4 507 / 795

Note :
10 / 10 - par 4 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
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

  • Public Sub AllisintheZip(filename as String)
  • Dezip(filename)
  • End Sub
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...
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

27 mars 2005 19:17:10 :
Ce n'est pas réellement une mise à jour c'est juste une correction du texte accompagnant la source

Commentaires et avis

signaler à un administrateur
Commentaire de BozzoDodo le 27/03/2005 21:05:38

Tu n'as pas inventer l'utilisation des api GetDIBits et SetDIBits dans les logiciels de retouches graphiques...

signaler à un administrateur
Commentaire de ScSami le 27/03/2005 21:57:51

C'est clair, Bozzo a raison. Y'a plein de sources sur VBF concernant Get et Set DIBits (cf. les sources, entre autre, de DarkSidious)!!!

De plus, si tu connais un moyen plus rapide que SetPixel, ben ça ne peut être que SetPixelV qui, je le rappel, n'a pas la précision colorimétrique du premier!

Mais bon, l'intention est bonne.

Cependant, si tu veux vraiment faire un truc inédit sur VBF, fait nous une bonne source pour faire des panoramas (voir même des anaglyphs panoraniques ;-)
Ou alors une source de stéréogrammes.

Bonne prog... meister

signaler à un administrateur
Commentaire de Progmeister le 28/03/2005 01:11:02

Bon les gars je sais bien que je n'ai pas inventé les apis SetDIBits et GetDIBits, c'est d'ailleurs sur VB que j'en ai eu l'idée et d'ailleurs grace à DarkSidious mais:
1 - L'API était mal utilisée, le tableau de Bytes passé en paramètre pour récupéré les pixel était mal dimensionné ce qui le rendait inutilisable pour des filtres plus complexe, et les paramètres de la structure BITMAPINFO étaient mal définis si bien que l'on ne pouvait pas appliquer de filtre sur la plupart des images chargées avec la fonction loadpicture (ou avec les apis pour les puristes)
2 - Je déplore que sur VBFrance, 98% des effets graphiques programmés, aussi bons soient ils, utilisent les fonctions GetPixel et SetPixel (SetPixelV si tu veux, ca ne change pas grand chose ici) qui sont particulièrement lentes...

Voila ma source est donc à but pédagogique, pour faciliter l'utilisation de ces deux fonctions si peu utilisées

De plus cette source était à la base faite pour présenter l'effet de produit de convolution, utilisé par tous les logiciels de retouche d'image

Merci pour tes idées ScSami mais j'ai d'autres projets pour le moment....

signaler à un administrateur
Commentaire de ScSami le 28/03/2005 17:30:34

Sur toutes ces précieuses précisions, je ne regrette qu'une chose :  que tu ai d'autre projet :-(((

;-)

Je trouves cependant que certain de tes effets sont plutot lent! (non, là j'te taquine ;-)

signaler à un administrateur
Commentaire de MoiOlivier le 28/03/2005 18:16:08

Salut,
Merci, merci et merci, etc.
J'aime bien.
Vraiment bien.

Juste une (toute petite) chose : pense à cocher toutes les case dans la fenêtre "options avancées" des options de compilation, ça fait gagner pas mal de temps lors du calcul des effets...

Ah oui, toujours pour l'optimisation (et c'est encore un détail) : utilise des Long, toujours des Long, et non des Integer quand tu peux (perso, j'ai remarqué que c'était plus rapide aussi...)

Bonne prog, @+

signaler à un administrateur
Commentaire de bidoch78 le 29/03/2005 09:41:26

En tous cas, force est de constater que le code est tres pro : bien commenté, aéré, lisible.

signaler à un administrateur
Commentaire de ennixo le 30/03/2005 19:23:02

@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

signaler à un administrateur
Commentaire de jaimelecsharp le 29/06/2005 12:28:39

Merci Progmeister pour ce bon code d'utilisation de SetDIBits.

signaler à un administrateur
Commentaire de mobilotek le 04/01/2006 11:54:12

Peut-on m'expliquer en détail chaque parametre de GetDIBits,svp?

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,562 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.