Farben

  • Hi hab ein Problem,

    ich hab ein Bild und will bestimmte Pixel die Farbe auslesen mit PixelGetColor
    wenn ich das getan hab kommt der farbwert als dezimalzahl

    jetzt will ich aber in der console nur "Rot";"Gelb","Weis","Orange","Blau" und "Grün als String ausgeben

    is es möglich z.B. von dem Wert bis zu diesem Wert gleich "Blau" zudefinieren
    oder irgendwie anders?

    :?: :?: :?:

  • Benutz

    [autoit]

    Hex()

    [/autoit]

    um es in einen 0xAARRGGBB oder 0xRRGGBB Hex-String (Jaja, ist kein wirklicher String) zu wandeln. Du könntest dann sagen das wenn der Dezimalwert von BB (Blau) größer ist als XX (255 ist das Maximum) dann soll es als blau gewertet werden. Natürlich musst du auch gucken welche Werte R und G haben, weil es sonst auch Violett sein kann, z.B.

    mfg BB

    "IF YOU'RE GOING TO KILL IT
    OPEN SOURCE IT!"

    by Phillip Torrone

    Zitat von Shoutbox

    [Heute, 11:16] Andy: ....böseböseböseböse....da erinnere ich mich daran, dass man den Puschelschwanz eines KaRnickels auch "Blume" nennt....ob da eins zum anderen passt? :rofl: :rofl: :rofl: :rofl:

    https://autoit.de/index.php?page…leIt#post251138

    Neon Snake

  • Eigentlich sollte der Rückgabewert der Funktion keine Dezimalzahl sein (http://www.autoit.de/dokumentation/…xelGetColor.htm).

    Vielleicht hilft es Dir weiter, wenn Du den Farb-Modus entsprechend änderst (http://www.autoit.de/dokumentation/…n.htm#ColorMode) und dann die Werte mit einer RGB-Tabelle abgleichst.

    Die Tabelle bzw. die Funktion von BugFix (HEX-Code Farbtabelle) könnte Dir dabei helfen.

    • Offizieller Beitrag

    kann ich net auch mit der dezimalzahl des einfacher machen


    Das scheitert schlicht und einfach schon daran, dass die Farbübergänge fließend sind und eine ganz klare Unterteilung, wie du dir das vorstellst, somit nicht möglich ist.
    Falls du weißt, welche Farben zu erwarten sind, könntest du im Vorfeld eine Zuordung erstellen.

  • Hi!
    Ich habe dir schon in der Shoutbox den Link zu RGB gepostet....

    Zitat

    aber kann ich net auch mit der dezimalzahl des einfacher machen

    der Satz sagt mir, dass du keinen Bock hattest, auch nur ansatzweise etwas zu kapieren!
    Andernfalls hätte die Frage gelautet:"...Ich habe den Wiki-Artikel gelesen, aber weiss nicht, wie ich mit AutoIt die einzelnen Farbanteile aus der Farbe RRGGBB bekomme..."
    Du suchst jemanden, der dir den Arm aus der Sonne legt, vielleicht erbarmt sich ja jemand^^
    BadBunny hat dir schon den richtigen Hinweis gegeben...

  • Hier ein Beispiel was dir die Grundfarben als Dezimalwerte ausgibt:

    [autoit]

    Global $Rot, $Gruen, $Blau, $var

    [/autoit][autoit][/autoit][autoit]

    $var = PixelGetColor(10, 10)

    [/autoit][autoit][/autoit][autoit]

    ; wir machen
    ; - aus dem Dezimalwert einen Hexwert ;0xRRGGBB -> RR = Rot, GG = Grün, BB = Blau
    ; - schneiden den Auseinander - wir wissen ja was an welcher stelle steht
    ; - fügen den Kopf "0x000000" hinzu - damit Int() sauber erkennt das wir ihm da eine Hexzahl präsentieren
    ; - und haben den Dezimalwert

    [/autoit][autoit][/autoit][autoit]

    $Rot = Int("0x000000" & StringMid(Hex($var),3,2))
    $Gruen = Int("0x000000" & StringMid(Hex($var),5,2))
    $Blau = Int("0x000000" & StringMid(Hex($var),7,2))

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0,"Farbwerte", "Farbwert Hexadezimal: " & Hex($var) & @CRLF & "Rot dezimal: " & $Rot & @CRLF & "Grün dezimal: " & $Gruen & @CRLF & "Blau dezimal: " & $Blau)

    [/autoit][autoit][/autoit][autoit][/autoit]

    hab mir das vor ein paar Tagen für mein ColorEcho ausdenken müssen umd die Standard-Farbwerte auslesen zu können.

    BLinz

  • einfach mal Farbtabelle in google eintippern wäre auch zu viel gewesen..