Bonjour à tous et merci pour votre intéret
en fait je veux faire l'affichage d'une photo en commençant par un
uniforme et faire apparaitre l'image petit à petit, donc pour ça
la fonction getDIBits qui me permet de récupérer le tableau des
couleur de chaque pixel (1024*1280*3)(fonction elle assez rapide pour
ce tableau environ 470millisecondes). Je commence par un tableau avec
les valeurs à zéro par exemple , je l'affiche avec la fonction
setDIBits(fonction encore plus rapide 30millisecondes) puis dans une
j'incrémente chaque éléments du tableau par 1/5 de la valeur de
d'origine.
For X = 1 To Lpics
For Y = 1 To Hpics
PicBits2(1, X, Y) = PicBits2(1, X, Y) + PicBits(1, X, Y)
'vitcoul=5 par exemple
PicBits2(2, X, Y) = PicBits2(2, X, Y) + PicBits(2, X, Y)
PicBits2(3, X, Y) = PicBits2(3, X, Y) + PicBits(3, X, Y)
Next Y
Next X
mais ce calcul dans une boucle est trop long 4 à 5 secondes pour
pixels
Alors Jean marc tu dits" On peut si ça en vaut la peine" pour moi ça
peine ma sueur n'est pas payée, ce n'est que de l'amusement, ce qui
m'intéresse surtout c'est de trouver une méthode qui est plus rapide
changer la valeur de ce tableau. Malheureusement j'ai aucune
C, mais si tu avais un petit programme très bien commenté(pour pouvoir
l'étudier, le comprendre) je suis preneur, mais s'il y avait des
même API que je pourrais manipuler en VB et surtout qui améliorerait
sensiblement le calcul, tu parles de 100 à 1000 fois plus rapide. Dans
l'immediat je vais aller voir l'adresse que tu as indiquée.
Bonjour à tous et merci pour votre intéret
en fait je veux faire l'affichage d'une photo en commençant par un
uniforme et faire apparaitre l'image petit à petit, donc pour ça
la fonction getDIBits qui me permet de récupérer le tableau des
couleur de chaque pixel (1024*1280*3)(fonction elle assez rapide pour
ce tableau environ 470millisecondes). Je commence par un tableau avec
les valeurs à zéro par exemple , je l'affiche avec la fonction
setDIBits(fonction encore plus rapide 30millisecondes) puis dans une
j'incrémente chaque éléments du tableau par 1/5 de la valeur de
d'origine.
For X = 1 To Lpics
For Y = 1 To Hpics
PicBits2(1, X, Y) = PicBits2(1, X, Y) + PicBits(1, X, Y)
'vitcoul=5 par exemple
PicBits2(2, X, Y) = PicBits2(2, X, Y) + PicBits(2, X, Y)
PicBits2(3, X, Y) = PicBits2(3, X, Y) + PicBits(3, X, Y)
Next Y
Next X
mais ce calcul dans une boucle est trop long 4 à 5 secondes pour
pixels
Alors Jean marc tu dits" On peut si ça en vaut la peine" pour moi ça
peine ma sueur n'est pas payée, ce n'est que de l'amusement, ce qui
m'intéresse surtout c'est de trouver une méthode qui est plus rapide
changer la valeur de ce tableau. Malheureusement j'ai aucune
C, mais si tu avais un petit programme très bien commenté(pour pouvoir
l'étudier, le comprendre) je suis preneur, mais s'il y avait des
même API que je pourrais manipuler en VB et surtout qui améliorerait
sensiblement le calcul, tu parles de 100 à 1000 fois plus rapide. Dans
l'immediat je vais aller voir l'adresse que tu as indiquée.
Bonjour à tous et merci pour votre intéret
en fait je veux faire l'affichage d'une photo en commençant par un
uniforme et faire apparaitre l'image petit à petit, donc pour ça
la fonction getDIBits qui me permet de récupérer le tableau des
couleur de chaque pixel (1024*1280*3)(fonction elle assez rapide pour
ce tableau environ 470millisecondes). Je commence par un tableau avec
les valeurs à zéro par exemple , je l'affiche avec la fonction
setDIBits(fonction encore plus rapide 30millisecondes) puis dans une
j'incrémente chaque éléments du tableau par 1/5 de la valeur de
d'origine.
For X = 1 To Lpics
For Y = 1 To Hpics
PicBits2(1, X, Y) = PicBits2(1, X, Y) + PicBits(1, X, Y)
'vitcoul=5 par exemple
PicBits2(2, X, Y) = PicBits2(2, X, Y) + PicBits(2, X, Y)
PicBits2(3, X, Y) = PicBits2(3, X, Y) + PicBits(3, X, Y)
Next Y
Next X
mais ce calcul dans une boucle est trop long 4 à 5 secondes pour
pixels
Alors Jean marc tu dits" On peut si ça en vaut la peine" pour moi ça
peine ma sueur n'est pas payée, ce n'est que de l'amusement, ce qui
m'intéresse surtout c'est de trouver une méthode qui est plus rapide
changer la valeur de ce tableau. Malheureusement j'ai aucune
C, mais si tu avais un petit programme très bien commenté(pour pouvoir
l'étudier, le comprendre) je suis preneur, mais s'il y avait des
même API que je pourrais manipuler en VB et surtout qui améliorerait
sensiblement le calcul, tu parles de 100 à 1000 fois plus rapide. Dans
l'immediat je vais aller voir l'adresse que tu as indiquée.
Bonjour,
Je pense qu'il doit exister des algos plus performants pour faire le
calcul que tu veux faire.
Par exemple, tu refais la division PicBits(1, X, Y) vitcoul pour chaque
passage dans la boucle, alors que cette valeur ne change pas, et pourrais
donc être calculée une fois pour toute (dans une troisième table). Pour
chaque pixel, tu fais donc un accès en lecture à PicBits2, un accès en
lecture à PicBits, une addition et une division.
A cause des arrondis, il est de plus possible que l'image après la
cinquième itération soit différente de l'image initiale.
En première simplification, j'aurais tendance à faire une seule
multiplication sur PicBits, avec un facteur variant de 0 à 1
'coef le facteur variant de 0 à 1, ou de 0.2 à 0.8
'si on affiche la table vide au début et l'image initiale à la fin
For X = 1 To Lpics
For Y = 1 To Hpics
PicBits2(1, X, Y) = PicBits(1, X, Y) * coef
PicBits2(2, X, Y) = PicBits(2, X, Y) * coef
PicBits2(3, X, Y) = PicBits(3, X, Y) * coef
Next Y
Next X
En seconde simplification, je me demanderais si une opération de
combinaison entre un rectangle gris et l'image avec bitblt ne ferais pas
ce que je veux.
Vincent Guichard
Bonjour,
Je pense qu'il doit exister des algos plus performants pour faire le
calcul que tu veux faire.
Par exemple, tu refais la division PicBits(1, X, Y) vitcoul pour chaque
passage dans la boucle, alors que cette valeur ne change pas, et pourrais
donc être calculée une fois pour toute (dans une troisième table). Pour
chaque pixel, tu fais donc un accès en lecture à PicBits2, un accès en
lecture à PicBits, une addition et une division.
A cause des arrondis, il est de plus possible que l'image après la
cinquième itération soit différente de l'image initiale.
En première simplification, j'aurais tendance à faire une seule
multiplication sur PicBits, avec un facteur variant de 0 à 1
'coef le facteur variant de 0 à 1, ou de 0.2 à 0.8
'si on affiche la table vide au début et l'image initiale à la fin
For X = 1 To Lpics
For Y = 1 To Hpics
PicBits2(1, X, Y) = PicBits(1, X, Y) * coef
PicBits2(2, X, Y) = PicBits(2, X, Y) * coef
PicBits2(3, X, Y) = PicBits(3, X, Y) * coef
Next Y
Next X
En seconde simplification, je me demanderais si une opération de
combinaison entre un rectangle gris et l'image avec bitblt ne ferais pas
ce que je veux.
Vincent Guichard
Bonjour,
Je pense qu'il doit exister des algos plus performants pour faire le
calcul que tu veux faire.
Par exemple, tu refais la division PicBits(1, X, Y) vitcoul pour chaque
passage dans la boucle, alors que cette valeur ne change pas, et pourrais
donc être calculée une fois pour toute (dans une troisième table). Pour
chaque pixel, tu fais donc un accès en lecture à PicBits2, un accès en
lecture à PicBits, une addition et une division.
A cause des arrondis, il est de plus possible que l'image après la
cinquième itération soit différente de l'image initiale.
En première simplification, j'aurais tendance à faire une seule
multiplication sur PicBits, avec un facteur variant de 0 à 1
'coef le facteur variant de 0 à 1, ou de 0.2 à 0.8
'si on affiche la table vide au début et l'image initiale à la fin
For X = 1 To Lpics
For Y = 1 To Hpics
PicBits2(1, X, Y) = PicBits(1, X, Y) * coef
PicBits2(2, X, Y) = PicBits(2, X, Y) * coef
PicBits2(3, X, Y) = PicBits(3, X, Y) * coef
Next Y
Next X
En seconde simplification, je me demanderais si une opération de
combinaison entre un rectangle gris et l'image avec bitblt ne ferais pas
ce que je veux.
Vincent Guichard
bonsoir
je vais essayé avec une seule opération peut être gagnerais je du
tu as raison après cette boucle je finissait par un affichage de
d'origine.
bonsoir
je vais essayé avec une seule opération peut être gagnerais je du
tu as raison après cette boucle je finissait par un affichage de
d'origine.
bonsoir
je vais essayé avec une seule opération peut être gagnerais je du
tu as raison après cette boucle je finissait par un affichage de
d'origine.
"marc.dufresne" a écrit dans le
message de news:44749d0f$0$29637$bonsoir
je vais essayé avec une seule opération peut être gagnerais je du
temps !tu as raison après cette boucle je finissait par un affichage de
l'imaged'origine.
Hello,
La solution avec un seul coeff de 0 à 1 est certainement
la meilleure solution, comme ceci (proposé par Vincent):
For X = 1 To Lpics
For Y = 1 To Hpics
PicBits2(1, X, Y) = PicBits(1, X, Y) * coef
PicBits2(2, X, Y) = PicBits(2, X, Y) * coef
PicBits2(3, X, Y) = PicBits(3, X, Y) * coef
Next Y
Next X
Si tu te décides pour cette méthode, je te fournis la version
dll en C, avec les appels et déclaration VB correspondants.
J'ai fais quelques essais préliminaires, j'obtiens
selon les méthodes un gain variant de 10% (pas grand chose) à
1000% (10 fois plus rapide, carrément bien!).
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
"marc.dufresne" <pasde.mail.direct.marcdufresne@free.fr> a écrit dans le
message de news:44749d0f$0$29637$636a55ce@news.free.fr...
bonsoir
je vais essayé avec une seule opération peut être gagnerais je du
temps !
tu as raison après cette boucle je finissait par un affichage de
l'image
d'origine.
Hello,
La solution avec un seul coeff de 0 à 1 est certainement
la meilleure solution, comme ceci (proposé par Vincent):
For X = 1 To Lpics
For Y = 1 To Hpics
PicBits2(1, X, Y) = PicBits(1, X, Y) * coef
PicBits2(2, X, Y) = PicBits(2, X, Y) * coef
PicBits2(3, X, Y) = PicBits(3, X, Y) * coef
Next Y
Next X
Si tu te décides pour cette méthode, je te fournis la version
dll en C, avec les appels et déclaration VB correspondants.
J'ai fais quelques essais préliminaires, j'obtiens
selon les méthodes un gain variant de 10% (pas grand chose) à
1000% (10 fois plus rapide, carrément bien!).
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
"marc.dufresne" a écrit dans le
message de news:44749d0f$0$29637$bonsoir
je vais essayé avec une seule opération peut être gagnerais je du
temps !tu as raison après cette boucle je finissait par un affichage de
l'imaged'origine.
Hello,
La solution avec un seul coeff de 0 à 1 est certainement
la meilleure solution, comme ceci (proposé par Vincent):
For X = 1 To Lpics
For Y = 1 To Hpics
PicBits2(1, X, Y) = PicBits(1, X, Y) * coef
PicBits2(2, X, Y) = PicBits(2, X, Y) * coef
PicBits2(3, X, Y) = PicBits(3, X, Y) * coef
Next Y
Next X
Si tu te décides pour cette méthode, je te fournis la version
dll en C, avec les appels et déclaration VB correspondants.
J'ai fais quelques essais préliminaires, j'obtiens
selon les méthodes un gain variant de 10% (pas grand chose) à
1000% (10 fois plus rapide, carrément bien!).
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
"marc.dufresne" a écrit dans le
message de news:44749d0f$0$29637$bonsoir
je vais essayé avec une seule opération peut être gagnerais je du
temps !tu as raison après cette boucle je finissait par un affichage de
l'imaged'origine.
Hello,
La solution avec un seul coeff de 0 à 1 est certainement
la meilleure solution, comme ceci (proposé par Vincent):
For X = 1 To Lpics
For Y = 1 To Hpics
PicBits2(1, X, Y) = PicBits(1, X, Y) * coef
PicBits2(2, X, Y) = PicBits(2, X, Y) * coef
PicBits2(3, X, Y) = PicBits(3, X, Y) * coef
Next Y
Next X
Si tu te décides pour cette méthode, je te fournis la version
dll en C, avec les appels et déclaration VB correspondants.
J'ai fais quelques essais préliminaires, j'obtiens
selon les méthodes un gain variant de 10% (pas grand chose) à
1000% (10 fois plus rapide, carrément bien!).
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
"marc.dufresne" <pasde.mail.direct.marcdufresne@free.fr> a écrit dans le
message de news:44749d0f$0$29637$636a55ce@news.free.fr...
bonsoir
je vais essayé avec une seule opération peut être gagnerais je du
temps !
tu as raison après cette boucle je finissait par un affichage de
l'image
d'origine.
Hello,
La solution avec un seul coeff de 0 à 1 est certainement
la meilleure solution, comme ceci (proposé par Vincent):
For X = 1 To Lpics
For Y = 1 To Hpics
PicBits2(1, X, Y) = PicBits(1, X, Y) * coef
PicBits2(2, X, Y) = PicBits(2, X, Y) * coef
PicBits2(3, X, Y) = PicBits(3, X, Y) * coef
Next Y
Next X
Si tu te décides pour cette méthode, je te fournis la version
dll en C, avec les appels et déclaration VB correspondants.
J'ai fais quelques essais préliminaires, j'obtiens
selon les méthodes un gain variant de 10% (pas grand chose) à
1000% (10 fois plus rapide, carrément bien!).
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
"marc.dufresne" a écrit dans le
message de news:44749d0f$0$29637$bonsoir
je vais essayé avec une seule opération peut être gagnerais je du
temps !tu as raison après cette boucle je finissait par un affichage de
l'imaged'origine.
Hello,
La solution avec un seul coeff de 0 à 1 est certainement
la meilleure solution, comme ceci (proposé par Vincent):
For X = 1 To Lpics
For Y = 1 To Hpics
PicBits2(1, X, Y) = PicBits(1, X, Y) * coef
PicBits2(2, X, Y) = PicBits(2, X, Y) * coef
PicBits2(3, X, Y) = PicBits(3, X, Y) * coef
Next Y
Next X
Si tu te décides pour cette méthode, je te fournis la version
dll en C, avec les appels et déclaration VB correspondants.
J'ai fais quelques essais préliminaires, j'obtiens
selon les méthodes un gain variant de 10% (pas grand chose) à
1000% (10 fois plus rapide, carrément bien!).
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
j'ai oublié j'essaye d'aller sur ton site mais apperemment j'ai toujours
serveur introuvable
"Jean-Marc" a écrit dans le message de
news: 4474bc1c$0$2131$"marc.dufresne" a écrit dans le
message de news:44749d0f$0$29637$bonsoir
je vais essayé avec une seule opération peut être gagnerais je du
temps !tu as raison après cette boucle je finissait par un affichage de
l'imaged'origine.
Hello,
La solution avec un seul coeff de 0 à 1 est certainement
la meilleure solution, comme ceci (proposé par Vincent):
For X = 1 To Lpics
For Y = 1 To Hpics
PicBits2(1, X, Y) = PicBits(1, X, Y) * coef
PicBits2(2, X, Y) = PicBits(2, X, Y) * coef
PicBits2(3, X, Y) = PicBits(3, X, Y) * coef
Next Y
Next X
Si tu te décides pour cette méthode, je te fournis la version
dll en C, avec les appels et déclaration VB correspondants.
J'ai fais quelques essais préliminaires, j'obtiens
selon les méthodes un gain variant de 10% (pas grand chose) à
1000% (10 fois plus rapide, carrément bien!).
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
j'ai oublié j'essaye d'aller sur ton site mais apperemment j'ai toujours
serveur introuvable
"Jean-Marc" <NO_SPAM_jean_marc_n2@yahoo.fr> a écrit dans le message de
news: 4474bc1c$0$2131$ba620e4c@news.skynet.be...
"marc.dufresne" <pasde.mail.direct.marcdufresne@free.fr> a écrit dans le
message de news:44749d0f$0$29637$636a55ce@news.free.fr...
bonsoir
je vais essayé avec une seule opération peut être gagnerais je du
temps !
tu as raison après cette boucle je finissait par un affichage de
l'image
d'origine.
Hello,
La solution avec un seul coeff de 0 à 1 est certainement
la meilleure solution, comme ceci (proposé par Vincent):
For X = 1 To Lpics
For Y = 1 To Hpics
PicBits2(1, X, Y) = PicBits(1, X, Y) * coef
PicBits2(2, X, Y) = PicBits(2, X, Y) * coef
PicBits2(3, X, Y) = PicBits(3, X, Y) * coef
Next Y
Next X
Si tu te décides pour cette méthode, je te fournis la version
dll en C, avec les appels et déclaration VB correspondants.
J'ai fais quelques essais préliminaires, j'obtiens
selon les méthodes un gain variant de 10% (pas grand chose) à
1000% (10 fois plus rapide, carrément bien!).
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
j'ai oublié j'essaye d'aller sur ton site mais apperemment j'ai toujours
serveur introuvable
"Jean-Marc" a écrit dans le message de
news: 4474bc1c$0$2131$"marc.dufresne" a écrit dans le
message de news:44749d0f$0$29637$bonsoir
je vais essayé avec une seule opération peut être gagnerais je du
temps !tu as raison après cette boucle je finissait par un affichage de
l'imaged'origine.
Hello,
La solution avec un seul coeff de 0 à 1 est certainement
la meilleure solution, comme ceci (proposé par Vincent):
For X = 1 To Lpics
For Y = 1 To Hpics
PicBits2(1, X, Y) = PicBits(1, X, Y) * coef
PicBits2(2, X, Y) = PicBits(2, X, Y) * coef
PicBits2(3, X, Y) = PicBits(3, X, Y) * coef
Next Y
Next X
Si tu te décides pour cette méthode, je te fournis la version
dll en C, avec les appels et déclaration VB correspondants.
J'ai fais quelques essais préliminaires, j'obtiens
selon les méthodes un gain variant de 10% (pas grand chose) à
1000% (10 fois plus rapide, carrément bien!).
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
j'ai oublié j'essaye d'aller sur ton site mais apperemment j'ai
serveur introuvable
j'ai oublié j'essaye d'aller sur ton site mais apperemment j'ai
serveur introuvable
j'ai oublié j'essaye d'aller sur ton site mais apperemment j'ai
serveur introuvable
Bonsoir plutôt bonne nuit
je n'ai pas encore essayé avec un coefficient, mais je ne comprends
comment tu obtiens des gains soit de 10% soit de 1000%, je suppose que
n'est pas avec les mêmes méthodes!?
Je suis Ok pour que tu fournisses une dll version C mais il faudra
m'explique comment on s'en sert et surtout si ça ne te dérange pas de
commenter ta méthode, je tiens à apprendre quelque chose,c'est ça qui
m'intéresse dans la réalisation de mon programe
Bonsoir plutôt bonne nuit
je n'ai pas encore essayé avec un coefficient, mais je ne comprends
comment tu obtiens des gains soit de 10% soit de 1000%, je suppose que
n'est pas avec les mêmes méthodes!?
Je suis Ok pour que tu fournisses une dll version C mais il faudra
m'explique comment on s'en sert et surtout si ça ne te dérange pas de
commenter ta méthode, je tiens à apprendre quelque chose,c'est ça qui
m'intéresse dans la réalisation de mon programe
Bonsoir plutôt bonne nuit
je n'ai pas encore essayé avec un coefficient, mais je ne comprends
comment tu obtiens des gains soit de 10% soit de 1000%, je suppose que
n'est pas avec les mêmes méthodes!?
Je suis Ok pour que tu fournisses une dll version C mais il faudra
m'explique comment on s'en sert et surtout si ça ne te dérange pas de
commenter ta méthode, je tiens à apprendre quelque chose,c'est ça qui
m'intéresse dans la réalisation de mon programe
Bonsoir plutôt bonne nuit
je n'ai pas encore essayé avec un coefficient, mais je ne comprends
comment tu obtiens des gains soit de 10% soit de 1000%, je suppose que
n'est pas avec les mêmes méthodes!?
Je suis Ok pour que tu fournisses une dll version C mais il faudra
m'explique comment on s'en sert et surtout si ça ne te dérange pas de
commenter ta méthode, je tiens à apprendre quelque chose,c'est ça qui
m'intéresse dans la réalisation de mon programe
Bonsoir plutôt bonne nuit
je n'ai pas encore essayé avec un coefficient, mais je ne comprends
comment tu obtiens des gains soit de 10% soit de 1000%, je suppose que
n'est pas avec les mêmes méthodes!?
Je suis Ok pour que tu fournisses une dll version C mais il faudra
m'explique comment on s'en sert et surtout si ça ne te dérange pas de
commenter ta méthode, je tiens à apprendre quelque chose,c'est ça qui
m'intéresse dans la réalisation de mon programe
Bonsoir plutôt bonne nuit
je n'ai pas encore essayé avec un coefficient, mais je ne comprends
comment tu obtiens des gains soit de 10% soit de 1000%, je suppose que
n'est pas avec les mêmes méthodes!?
Je suis Ok pour que tu fournisses une dll version C mais il faudra
m'explique comment on s'en sert et surtout si ça ne te dérange pas de
commenter ta méthode, je tiens à apprendre quelque chose,c'est ça qui
m'intéresse dans la réalisation de mon programe