begin process at 2010 02 10 00:10:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > FXMEISTER - REVOLUTION DE LA RETOUCHE D'IMAGE SUR VBFRANCE

FXMEISTER - REVOLUTION DE LA RETOUCHE D'IMAGE SUR VBFRANCE


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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 673 / 822

Auteur : Progmeister

Ecrire un message privé
Site perso
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

Les Membres Club peuvent 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

 Sources du même auteur

Source avec Zip Source avec une capture 3D OBJECT CREATOR (LOGICIEL STYLE 3DMAX)
Source avec Zip Source avec une capture 3D : UTILSER JOYSTICKS, SOURIS ET CLAVIER DANS VOS JEUX
Source avec Zip Source avec une capture TORES EN 3D AVEC DIRECT3D IM
Source avec Zip Source avec une capture 3D : VISION PANORAMIQUE COMME DANS HALF-LIFE
Source avec Zip Source avec une capture ROTATION INTUITIVE AVEC LA SOURIS EN DIRECT3D IM

 Sources de la même categorie

Source avec Zip ALBUM PHOTOS par ayoube2009
Source avec Zip Source avec une capture EDITEUR D'AUTOMATES CELLULAIRES par PADYVEN
Source avec Zip Source avec une capture PROGRAMME DE DESSIN À LA SOURIS AVEC OUVERTURE ET ENREGISTRE... par SnkVrt
Source avec Zip Source avec une capture Source .NET (Dotnet) PHOTOSEXPRESS - TRAITEMENT DE PHOTOS par zozo14
Source avec Zip Source avec une capture ÉCRIRE SUR LE WALLPAPER par Rafale71

Commentaires et avis

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...

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

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....

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 ;-)

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, @+

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.

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

Commentaire de jaimelecsharp le 29/06/2005 12:28:39

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

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...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales