FXMEISTER - REVOLUTION DE LA RETOUCHE D'IMAGE SUR VBFRANCE
BozzoDodo
Messages postés185Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention10 janvier 2008
-
27 mars 2005 à 21:05
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024
-
31 juil. 2016 à 21:37
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Peut-on m'expliquer en détail chaque parametre de GetDIBits,svp?
jaimelecsharp
Messages postés1Date d'inscriptionmercredi 29 juin 2005StatutMembreDernière intervention29 juin 2005 29 juin 2005 à 12:28
Merci Progmeister pour ce bon code d'utilisation de SetDIBits.
ennixo
Messages postés224Date d'inscriptionsamedi 25 janvier 2003StatutMembreDernière intervention17 juin 2006 30 mars 2005 à 19:23
@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
bidoch78
Messages postés67Date d'inscriptionmercredi 27 février 2002StatutMembreDernière intervention 2 décembre 2005 29 mars 2005 à 09:41
En tous cas, force est de constater que le code est tres pro : bien commenté, aéré, lisible.
MoiOlivier
Messages postés172Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention 4 août 2005 28 mars 2005 à 18:16
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, @+
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 28 mars 2005 à 17:30
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 ;-)
Progmeister
Messages postés82Date d'inscriptionsamedi 23 février 2002StatutMembreDernière intervention28 mars 2005 28 mars 2005 à 01:11
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....
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 27 mars 2005 à 21:57
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
BozzoDodo
Messages postés185Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention10 janvier 2008 27 mars 2005 à 21:05
Tu n'as pas inventer l'utilisation des api GetDIBits et SetDIBits dans les logiciels de retouches graphiques...
31 juil. 2016 à 21:37
31 juil. 2016 à 21:23
4 janv. 2006 à 11:54
29 juin 2005 à 12:28
30 mars 2005 à 19:23
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
29 mars 2005 à 09:41
28 mars 2005 à 18:16
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, @+
28 mars 2005 à 17:30
;-)
Je trouves cependant que certain de tes effets sont plutot lent! (non, là j'te taquine ;-)
28 mars 2005 à 01:11
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....
27 mars 2005 à 21:57
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
27 mars 2005 à 21:05