Page 1 of 1
Couleur de pixel : idée.
Posted: 09 Oct 2011, 12:42
by extasie
J'utilise énormément l'action couleur de pixel car elle permet de vérifier quasiment tout le temps si le script s'effectue bien, comme j'ai beaucoup de facteur qui rentre en compte dans mes scripts, j'ai besoin de vérifier si mon action c'est bien déroulé.
J'ai donc quelques requêtes la concernant qui pourrait en intéressé plus d'un.
Ma première idée serait de rajouter une comparaison, à l'heure actuelle nous avons égal, plus sombre, plus clair. Mais parfois je ne sais pas si mon pixel va être plus sombre ou plus clair.
La nouvelle comparaison serait donc "différent de".
Ma deuxième idée est de rajouter dans le "si vrai" l'option "attendre" qui n'est en ce moment, que dans la case "si faux". (je n'ai d'ailleurs jamais compris pourquoi)
De plus pour cet option, je ne sais pas exactement ce quelle fait, ce que je voudrais moi, c'est que "attendre" vérifie en permanence la couleur du pixel jusqu'à ce que la comparaison soit vérifié.
Pour l'instant ma solution de remplacement c'est mettre une action "aller à la ligne" juste en dessous de mon action "couleur de pixel".
Re: Couleur de pixel : idée.
Posted: 09 Oct 2011, 15:12
by Jmgr
Ma première idée serait de rajouter une comparaison, à l'heure actuelle nous avons égal, plus sombre, plus clair. Mais parfois je ne sais pas si mon pixel va être plus sombre ou plus clair.
La nouvelle comparaison serait donc "différent de".
Pourquoi pas. Mais de toute façon si ce n'est pas égal c'est que c'est différent, il suffit d'inverser "Si vrai" et "Si faux".
Ma deuxième idée est de rajouter dans le "si vrai" l'option "attendre" qui n'est en ce moment, que dans la case "si faux". (je n'ai d'ailleurs jamais compris pourquoi)
De plus pour cet option, je ne sais pas exactement ce quelle fait, ce que je voudrais moi, c'est que "attendre" vérifie en permanence la couleur du pixel jusqu'à ce que la comparaison soit vérifié.
Pour l'instant ma solution de remplacement c'est mettre une action "aller à la ligne" juste en dessous de mon action "couleur de pixel".
L'idée de "Attendre" c'est de vérifier continuellement si le pixel est de la couleur voulue. C'est pour ça qu'il me semblait plus logique de ne le permettre que sur le "si faux". Mais ta remarque est juste.
Re: Couleur de pixel : idée.
Posted: 18 Oct 2011, 14:25
by bilou
Bonjour,
Je ne savais pas trop ou mettre ça et vu que ça concerne la teinte des pixels ...
j'ai fait un petit exemple qui me permet de récupérer la teint d'un pixel, soit par couleur teintergb(Color), soit par pixel teintexy(x, y) .
On peut facilement modifier les fonctions pour travailler sur la saturation et la luminosité si on veut.
code d'exemple:
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<scriptfile>
<settings program="actionaz" version="0.1.2" scriptVersion="1.0.0" os="Windows"/>
<actions>
<action name="ActionGoto" version="1.0.0"/>
<action name="ActionMessageBox" version="1.0.0"/>
<action name="ActionCode" version="1.0.0"/>
<action name="ActionPause" version="1.0.0"/>
</actions>
<parameters/>
<script pauseBefore="0" pauseAfter="0">
<action name="ActionCode">
<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">//======================================================================//
// Conversion RGB -> HSL
//======================================================================//
function teintergb(color){
var edte,edsa,edlu;
var edcr=parseInt(color.red)/255;
var edcg=parseInt(color.green)/255;
var edcb=parseInt(color.blue)/255;
var Min=Math.min(edcr,Math.min(edcg,edcb));
var Max=Math.max(edcr,Math.max(edcg,edcb));
edlu=(Max+Min)/2;
if(Max==Min){edte=0;edsa=0;}else{
if(edlu<0.5)edsa=(Max-Min)/(Max+Min);else edsa=(Max-Min)/(2-Max-Min);
switch(Max){
case edcr:edte=(edcg-edcb)/(Max-Min);break;
case edcg:edte=2+(edcb-edcr)/(Max-Min);break;
case edcb:edte=4+(edcr-edcg)/(Max-Min);break;}}
edte=(edte*240)/6;if(edte<0)edte=edte+240;edsa*=240;edlu*=240;
hue=Math.round(edte);
sat=Math.round(edsa);
lum=Math.round(edlu);
return ( hue );
}
function teintexy(x, y){
var color = Image.takeScreenshot().pixel(x, y)
var edte,edsa,edlu;
var edcr=parseInt(color.red)/255;
var edcg=parseInt(color.green)/255;
var edcb=parseInt(color.blue)/255;
var Min=Math.min(edcr,Math.min(edcg,edcb));
var Max=Math.max(edcr,Math.max(edcg,edcb));
edlu=(Max+Min)/2;
if(Max==Min){edte=0;edsa=0;}else{
if(edlu<0.5)edsa=(Max-Min)/(Max+Min);else edsa=(Max-Min)/(2-Max-Min);
switch(Max){
case edcr:edte=(edcg-edcb)/(Max-Min);break;
case edcg:edte=2+(edcb-edcr)/(Max-Min);break;
case edcb:edte=4+(edcr-edcg)/(Max-Min);break;}}
edte=(edte*240)/6;if(edte<0)edte=edte+240;edsa*=240;edlu*=240;
hue=Math.round(edte);
sat=Math.round(edsa);
lum=Math.round(edlu);
return ( hue );
}
</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="ActionMessageBox">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="windowIcon">
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="message">
<subParameter name="value" code="1">teintergb(Image.takeScreenshot().pixel(Mouse().position().x,Mouse().position().y));</subParameter>
</parameter>
<parameter name="title">
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="ifYes">
<subParameter name="line" code="0"></subParameter>
<subParameter name="action" code="0">do_nothing</subParameter>
</parameter>
<parameter name="customIcon">
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="icon">
<subParameter name="value" code="0">none</subParameter>
</parameter>
<parameter name="type">
<subParameter name="value" code="0">ok</subParameter>
</parameter>
<parameter name="ifNo">
<subParameter name="line" code="0"></subParameter>
<subParameter name="action" code="0">do_nothing</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="ActionMessageBox">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="windowIcon">
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="message">
<subParameter name="value" code="1">teintexy(Mouse().position().x,Mouse().position().y);</subParameter>
</parameter>
<parameter name="title">
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="ifYes">
<subParameter name="line" code="0"></subParameter>
<subParameter name="action" code="0">do_nothing</subParameter>
</parameter>
<parameter name="customIcon">
<subParameter name="value" code="0"></subParameter>
</parameter>
<parameter name="icon">
<subParameter name="value" code="0">none</subParameter>
</parameter>
<parameter name="type">
<subParameter name="value" code="0">ok</subParameter>
</parameter>
<parameter name="ifNo">
<subParameter name="line" code="0"></subParameter>
<subParameter name="action" code="0">do_nothing</subParameter>
</parameter>
</action>
<action name="ActionGoto">
<exception id="0" action="0" line=""/>
<exception id="1" action="0" line=""/>
<exception id="2" action="1" line=""/>
<parameter name="line">
<subParameter name="value" code="0">2</subParameter>
</parameter>
</action>
</script>
</scriptfile>
Re: Couleur de pixel : idée.
Posted: 19 Oct 2011, 07:28
by Jmgr
Le forum possède une partie "Tutos et exemples" :
http://jmgr.net/forum/viewforum.php?f=25