Page 1 of 1
[Résolu] Problène de code et de condition
Posted: 13 Dec 2012, 04:05
by Fredy123
Salut !
Ça fait un baye !
J'ai un problème qui commence à me chicoter, j'explique :
Je commence par prendre un screen shot avec :
MonImage = Image.takeScreenshot();
Je prend trois couleurs de pixel à trois endroits différents dans le screen avec ceci :
ImgPixel1 = MonImage.pixel (10,20)
Je fais une pause de 8 secondes, puis je reprend un autre screen shot mais cette fois avec une variable différente. Finalement je reprend trois couleur de pixel au même endroit que les autres.
Ça me donne comme résultat quelque chose comme ça :
Color [red:200][green:100][blue:255][alpha:255] x6.
Le problème :
Lorsque je souhaite comparer les couleurs de pixel prisent, j'en suis tout simplement incapable...
Exemple de condition de variable :
Si : ImgPixel1 = ImgPixel1b, aller à : Continuer. Sinon : ne rien faire *** J'ai testé : Égale, contient et différent de***
Le script ne bug pas, mais la condition est toujours fausse même quand elle devrait être vraie....
J'avais pensé à coder cette condition en JavaScript mais je ne suis pas un expert.
J'espère que tu pourra m'aider comme d'habitude !
Bonne journée.
Re: Problène de code et de condition
Posted: 15 Dec 2012, 13:31
by Michel
je me permets de répondre avec un script
exécute ce script avec actexec, suivant que tu bouge le contenu de l'écran ou pas pendant les 5 secondes d'attente, tu auras l'un ou l'autre des message. Bien sûr, tu peux affiner le test en rajoutant ou supprimant des pixels.
Voilà, en espérant que ça répond à ton besoin...
Code: Select all
function test1() {
var img1 = Image.takeScreenshot();
var img1p1 = img1.pixel (10,10);
var img1p2 = img1.pixel (100,100);
var img1p3 = img1.pixel (300,300);
Execution.pause(5000);
var img2 = Image.takeScreenshot();
var img2p1 = img2.pixel (10,10);
var img2p2 = img2.pixel (100,100);
var img2p3 = img2.pixel (300,300);
// est-ce que tous les pixels sont égaux ?
if (img1p1.equals(img2p1) && (img1p2.equals(img2p2)) && (img1p3.equals(img2p3))) {
Stdio.print("Tout est egal !");
} else {
Stdio.print("Tous les pixels ne sont pas egaux (certains le sont plus que d'autres...)");
}
}
test1();
Re: Problène de code et de condition
Posted: 15 Dec 2012, 17:20
by Jmgr
Le plus simple reste de le faire avec un bout de code, mais en fait il faut que j'ajoute le choix du type de la valeur à comparer à l'action Condition de Variable, un peu comme dans l'action Variable.
Re: Problène de code et de condition
Posted: 22 Dec 2012, 23:46
by Fredy123
En faite ça répond moyennement à mes besoins.
Pour coder les conditions je n'ai aucun problème. C'est plus du côté de : si la condition est vraie, va là ! à la ligne X. Je n'ai aucune idée de comment faire pour dire va à cette ligne....
Sinon pour ton script je ne peux pas vraiment le tester car je ne sais même pas comment exécuter Actexec. ^^
Merci pour l'aide !
J'espère qu'il y aura une Maj permettant de comparer des pixels !
Bonne journée.
Re: Problène de code et de condition
Posted: 23 Dec 2012, 13:20
by Michel
Si j'ai bien compris ton besoin, voici une version "intermédiaire" entre tout en code et tout dans Actionaz, en attendant que ce soit possible sans code...
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<scriptfile>
<settings program="actionaz" version="3.4.2" scriptVersion="1.0.0" os="GNU/Linux"/>
<actions>
<action name="ActionEndProcedure" version="1.0.0"/>
<action name="ActionVariable" version="1.0.0"/>
<action name="ActionCode" version="1.0.0"/>
<action name="ActionVariableCondition" version="1.0.0"/>
<action name="ActionConsole" version="1.0.0"/>
<action name="ActionPause" version="1.0.0"/>
<action name="ActionBeginProcedure" version="1.0.0"/>
</actions>
<parameters/>
<script pauseBefore="0" pauseAfter="0">
<action name="ActionCode" comment="la "librairie"">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="code">
<subParameter name="value" code="1">var img1p1 ;
var img1p2 ;
var img1p3 ;
var img2p1 ;
var img2p2 ;
var img2p3 ;
function takeimg1() {
var img1 = Image.takeScreenshot();
img1p1 = img1.pixel (10,10);
img1p2 = img1.pixel (100,100);
img1p3 = img1.pixel (300,300);
}
function takeimg2() {
var img2 = Image.takeScreenshot();
img2p1 = img2.pixel (10,10);
img2p2 = img2.pixel (100,100);
img2p3 = img2.pixel (300,300);
}
function testImg1Img2() {
// est-ce que tous les pixels sont égaux ?
if (img1p1.equals(img2p1) && (img1p2.equals(img2p2)) && (img1p3.equals(img2p3))) return "VRAI";
else
return "FAUX";
}
</subParameter>
</parameter>
</action>
<action name="ActionBeginProcedure" comment="C'est ok">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="name">
<subParameter name="value" code="0">Tout va bien</subParameter>
</parameter>
</action>
<action name="ActionConsole">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="output">
<subParameter name="value" code="0">information</subParameter>
</parameter>
<parameter name="text">
<subParameter name="value" code="0">Les deux images sont les mêmes!</subParameter>
</parameter>
</action>
<action name="ActionEndProcedure">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
</action>
<action name="ActionBeginProcedure" comment="Problème">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="name">
<subParameter name="value" code="0">Problème</subParameter>
</parameter>
</action>
<action name="ActionConsole">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="output">
<subParameter name="value" code="0">warning</subParameter>
</parameter>
<parameter name="text">
<subParameter name="value" code="0">Différence entre les deux images</subParameter>
</parameter>
</action>
<action name="ActionEndProcedure">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
</action>
<action name="ActionPause">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="duration">
<subParameter name="value" code="0">3</subParameter>
</parameter>
<parameter name="unit">
<subParameter name="value" code="0">seconds</subParameter>
</parameter>
</action>
<action name="ActionCode" comment="Premier screenshot">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="code">
<subParameter name="value" code="1">takeimg1();</subParameter>
</parameter>
</action>
<action name="ActionPause">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="duration">
<subParameter name="value" code="0">3</subParameter>
</parameter>
<parameter name="unit">
<subParameter name="value" code="0">seconds</subParameter>
</parameter>
</action>
<action name="ActionCode" comment="Second screenshot">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="code">
<subParameter name="value" code="1">takeimg2();</subParameter>
</parameter>
</action>
<action name="ActionVariable">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<exception id="32" action="0" line=""/>
<parameter name="colorValue">
<subParameter name="value" code="0">::</subParameter>
</parameter>
<parameter name="variable">
<subParameter name="value" code="0">test</subParameter>
</parameter>
<parameter name="type">
<subParameter name="value" code="0">string</subParameter>
</parameter>
<parameter name="value">
<subParameter name="value" code="1">testImg1Img2()</subParameter>
</parameter>
<parameter name="positionValue">
<subParameter name="value" code="0">:</subParameter>
</parameter>
</action>
<action name="ActionVariableCondition">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="ifEqual">
<subParameter name="line" code="0">Tout va bien</subParameter>
<subParameter name="action" code="0">call_procedure</subParameter>
</parameter>
<parameter name="comparison">
<subParameter name="value" code="0">equal</subParameter>
</parameter>
<parameter name="variable">
<subParameter name="value" code="0">test</subParameter>
</parameter>
<parameter name="value">
<subParameter name="value" code="0">VRAI</subParameter>
</parameter>
<parameter name="ifDifferent">
<subParameter name="line" code="0">Problème</subParameter>
<subParameter name="action" code="0">call_procedure</subParameter>
</parameter>
</action>
</script>
</scriptfile>
Re: Problène de code et de condition
Posted: 26 Dec 2012, 00:05
by Fredy123
Salut !
Merci encore pour l'aide !
Cependant, peu importe ce que je fais le résultat reste le même :
Les deux images son images sont les mêmes !
J'ai testé en changeant complètement de fenêtre et tout et toujours la même chose. ^^
Joyeuse fête !
EDIT : Laisse faire.... ça fonctionne ! Merci beaucoup
Bonne journée !
Re: Problène de code et de condition
Posted: 28 Dec 2012, 03:01
by Jmgr
J'ai corrigé le bug qui empêchait la comparaison de variables autres que des chaînes de caractères.
Je termine de tester ça demain et je publie la version 3.5.1.