Page 1 sur 1

[...]PixelGetColor & Speed

Posté : lun. 29 juin 2009 02:09
par DidUngar
Bonjour,
J'ai tenter d'optimiser une fonction de comparaison d'image
L'image a trouver est la poubelle windows ( donc placer en haut de l'écrant )
Sur l'ancienne version je met une moyenne ( sur 10 test ) de 23190 ( seconde ? ) pour la trouver
Sur la nouvelle version je met 24 480 pour la trouver.

Pourtant la fonction PixelGetColor est réputer comme étant lente, et je stoque ses résultats dans un tableaux 2 dimentions pour accélérée le résultat.
Auriez-vous une explication ?

version Beta :
► Afficher le texte
Version stable :
► Afficher le texte

Et bien sur l'outils de test :
► Afficher le texte
Le but final du script :
Détécter la barre verte de chargement de firefox pour prendre une capture d'érant une fois le DL d'une page web terminée
Envoyer le resultat via FTP sur un linux qui serai cronner pour convertir l'image en bmp via perl et ensuite la redimentionner en php pour en faire un ascreen.
Oui la solution est longue est imprafaite mais sinon je doit payer 1€ Les 1000 ascreen.
Alors que si je peut l'optimiser je pourrai faire les ascreen des mes sites automatiquement et plus réguliérement.
( soit 400 ascreen en moyenne par mois )

Je suis prenneur de vos idées.
Merci d'avance.

Re: [...]PixelGetColor & Speed

Posté : lun. 29 juin 2009 02:23
par Iste
une idée serait de pas passer par des fonction graphique...
L'udf FF.au3 doit bien pouvoir faire ce que tu cherche

Les fonction graphiques sont a utiliser en dernier recoure, meme si tout le monde semble se jeter sur ca en 1er

Du moins pour le "Détécter la barre verte de chargement de firefox"
car je vois pas de quoi il sagit ^^' et je comprend pas non plus la démarche d'apres :/ encore moins cette histoire d'argent :\
Enfin, ca c'est pas mon probleme ^^

Re: [...]PixelGetColor & Speed

Posté : lun. 29 juin 2009 02:37
par DidUngar
La barre verte est la barre de chargement de firefox.
donc si je la trouve je peut savoir ou en est le chargement.

Pour la partie transformation et balade de l'image c'est sur que hors de mon réseaux ca doit paraître bizard.
Pour les sous en faites :
http://www.shotbot.fr/ propose des ascreens gratuit mais en petite quantitée.
Ensuite il les vends se qui est normal.
Ayant un gros site donc beaucoup de ascreens a faire ( http://www.monautosurf.com ) je désire devenir indépendant sur la génération d'ascreen.

NB : ascreen : Image de type png de taille réduite , cette image est une capture d'écrant d'un site.
On l'utilise surtout pour le référencement.


J'ai trouver la librairie que tu me conseil. ( http://www.autoitscript.fr/forum/viewto ... +udf#p9139 )
Mais aimant apprendre par moi même a faire les choses j'utilise déjà la mienne.
► Afficher le texte
On peut remarquer que : firefox_loading() ne tient pas compte de la position de la barre de chargement.
D'ou mon travail sur la detection d'image.

Re: [...]PixelGetColor & Speed

Posté : lun. 29 juin 2009 02:41
par Iste
ha dac je comprend, tu veux faire un truc que les autres font payer, je comprend ^^

Bon alors, comme t'as l'air de vraiment faire comme ca, du moins pour essayer, l'idéal serait de prendre les coordonnées de la fenêtre de chargement avant de lancer la recherche !
comme ca ca l'imite, ou qu'elle soit

Mais maintenant j'en suis encore plus persuadé, c'est pas la bonne solution :p

Edit : dis en fait, et si tu inetget() la page ? pas bon ?

Re: [...]PixelGetColor & Speed

Posté : lun. 29 juin 2009 02:47
par DidUngar
Je suis tous as fait d'accord sur le faite que rétrécir la zone de recherche va nettement accelérée.
c'est d'ailleur pour cela que j'ai placer les arguments : ,$x_ini,$y_ini,$x_end,$y_end

Mais lors des test je préfére prendre de grande zone pour mieu faire les stats.
Et c'est la que j'ai remarquer ce phénoméne bizard getPix qui même en C est réputer extremement lent est plus rapide qu'une mise en ram des informations.

C'est pour comprendre se phénoméne que je suis venu poster.

Re: [...]PixelGetColor & Speed

Posté : lun. 29 juin 2009 02:53
par Iste
ha, bon ben dans ce cas je peux pas t'aider désolé ^^
mais si un jour tu cherche a faire un script pour le faire fonctionner, et non pour l'observer tel un rat dans un labyrinthe, je serais la :D

Re: [...]PixelGetColor & Speed

Posté : lun. 29 juin 2009 02:54
par Tlem
@DidUngar

Merci de mettre vos balise de code dans des balises spoiler lorsque votre code dépasse un dizaine de ligne.

Re: [...]PixelGetColor & Speed

Posté : lun. 29 juin 2009 03:00
par DidUngar
Iste a écrit :ha, bon ben dans ce cas je peux pas t'aider désolé ^^
mais si un jour tu cherche a faire un script pour le faire fonctionner, et non pour l'observer tel un rat dans un labyrinthe, je serais la :D
Merci je retient l'offre.
Tlem a écrit :@DidUngar

Merci de mettre vos balise de code dans des balises spoiler lorsque votre code dépasse un dizaine de ligne.
D'accord, je rajouterai la balise.

Re: [...]PixelGetColor & Speed

Posté : lun. 29 juin 2009 04:28
par orax
Bonsoir, alors en fait, ce que j'ai fait ce n'est pas une détection de l'image, mais juste d'un pixel. Je ne sais pas si ça pourra convenir.
Pour tester le script vous devez : lancer le script ; activer la fenêtre de Firefox et appuyer plusieurs fois sur F5 pour garder afficher la barre verte (ou blanche). Le script boucle tant que la couleur à l'emplacement de la barre verte ne sera pas grise.
Il est possible que 280 dans l'expression "$xBarreVerte=$a[2]-280" doit être modifié pour que ça marche !
Chez moi ça marche en fenêtre agrandit et normale. Voilà voila...
Je ne l'ai pas fait mais si vraiment vous voulez savoir à quel endroit se trouve la barre verte, il est possible de déterminer automatiquement la valeur 280 (dans "$xBarreVerte=$a[2]-280") avec une détection d'un pixel particulier dans la grande barre grise (la barre de statut).

Code : Tout sélectionner

Opt("PixelCoordMode",0)

$hwnd=ControlGetHandle("[CLASS:MozillaUIWindowClass]","","MozillaWindowClass1")
$a=ControlGetPos("[CLASS:MozillaUIWindowClass]","","MozillaWindowClass1")
$xBarreVerte=$a[2]-280 ; IMPORTANT : à modifier selon votre Firefox
$yBarreVerte=$a[3]-10
Sleep(2000)
;~ ClipPut(PixelGetColor($xBarreVerte,$yBarreVerte,$hwnd)) ; 0x00DFE0E5 = 14672101 = couleur grise
While PixelGetColor($xBarreVerte,$yBarreVerte,$hwnd) <> 14672101 ; 
    Sleep(100)
WEnd

Re: [...]PixelGetColor & Speed

Posté : lun. 29 juin 2009 07:59
par DidUngar
Ce qui m'interesse serai de ne plus avoir "à modifier selon votre Firefox".
Mon détecteur d'image fonctionne bien.

Mais je ne comprend pas le changement de vitesse qui s'oppére lorsque j'utilise un cache.
( J'admet que lorsque je met juste la ligne du bas du navigateur je met moin de 1 seconde a trouver la barre de chargement ,
mon probléme est donc purement un probléme de compréhention )

Re: [...]PixelGetColor & Speed

Posté : lun. 29 juin 2009 19:14
par orax
DidUngar a écrit :Ce qui m'interesse serai de ne plus avoir "à modifier selon votre Firefox".
Il n'y a qu'une ligne à rajouter :
► Afficher le texte

Re: [...]PixelGetColor & Speed

Posté : mar. 30 juin 2009 08:31
par DidUngar
Merci mais,
Tu demande a 2 reprise a l'utilisateur d'intervenir.
Et tu ne prend pas en compte les différent templatte.

De plus trouver la barre verte j'y arrive je demande juste a comprendre pourquoi mon script est plus lent avec un cache que sans.

Je ne vous demande pas de résoudre mon probléme final mais juste de m'aider a comprendre le ralentissement du script.