Farbe eines Pixels feststellen

Startseite Foren Deutsches LiveCode-Forum Farbe eines Pixels feststellen

Schlagwörter: 

Ansicht von 5 Antwort-Themen
  • Autor
    Beiträge
    • #14065
      Torsten
      Teilnehmer

      Hi,

      ich möchte die Farbe eines bestimmten Pixels (z.B. 100,100) in einem Image feststellen. Mit mousecolor kann man das machen, muss aber immer händisch arbeiten. Geht es auch per Script?

      Beste Grüße
      Torsten

    • #14067
      Torsten
      Teilnehmer

      Habs gefunden, ist leider kein direkter Befehl, sondern man muss ein bisschen arbeiten:

      Beispiel-Stack: http://forums.livecode.com/viewtopic.php?t=17655

      Der Weg: in der imageData eines Images sind die Pixelinfos sortiert nach der Position von links oben nach rechts unten. ImageData ist eine lange Reihe von Bytes. Jedes Pixel braucht 4 Byte für seine Farbangabe, d.h. man muss immer diese Sprünge machen:

      Code:

      
         put the imageData of image "meinBild.jpg" into tData
         put the width of image "meinBild.jpg" into tWidth
         put the height of image "meinBild.jpg" into tHeight
         
         ask "put the column and row of the pixel whose RGB value you want"
         
         put item 1 of it  into tColumn
         put item 2 of it - 1 into tRow
         
         put tWidth * tRow * 4 into tAllRows
         put tColumn * 4 into tTheColumns
         put tAllRows + tTheColumns into tByte -- for loc 1,1 it gives byte 4, see above how the 4 bytes of the pixel work
            
            -- we want byte 2 to 4 of the pixel
         put charToNum (char tByte - 2 of tData) into tRed -- byte 
         put charToNum (char tByte - 1 of tData) into tGreen
         put charToNum (char tByte of tData) into tBlue
         put tRed & comma & tGreen & comma & tBlue into tWholeRGB
         
         answer "the RGB value of pixel " & tColumn  & "," & tRow +1 & " is" & cr  & cr & tWholeRGB
      

      Ich mach daraus mal eine Funktion und poste den Code hier in den Strang.

      Beste Grüße
      Torsten

    • #14071
      Klaus Major
      Verwalter

      Hi Torsten,

      Du kannst aber doch mit -> „the screenMouseLoc“ den Cursor an die gewünschte Stelle im Bild plazieren, „the mousecolor“ ermitteln und den Cursor wieder resetten. Alles per Skript, woll?! 🙂

      Gruß

      Klaus

    • #14073
      Torsten
      Teilnehmer

      Aaah, super, geht sogar für andere Fenster 🙂

      Gibt es jetzt noch einen Trick, dass er bei screenMouseLoc einen Mausklick in das Fenster (welches ein anderes Programm ist) auslöst?

      Momentan mache ich das mit Cliclick (https://www.bluem.net/de/projekte/cliclick/), was auch gut funktioniert, aber wenn es direkt aus LC heraus gehen würde, wäre das umso besser.

      Beste Grüße
      Torsten

    • #14075
      Klaus Major
      Verwalter

      Nein, alles ausserhalb von LC können wir nicht kontrollieren.
      Obwohl Du mal „click at das_LOC_ausserhalb_von_LC“ probieren könntest, wer weiß…

      Am Mac geht vielleicht was mit AppleScript.
      Unter Windows? Keine Ahnung.

    • #14077
      Torsten
      Teilnehmer

      Hi Klaus,

      das Klicken in fremden Fenstern geht auf dem Mac super mit Cliclick (https://www.bluem.net/de/projekte/cliclick/)
      Aus Livecode heraus dann mit dem shell-Command starten:
      put shell(„/usr/local/bin/cliclick c:100,100“)

      Schöner wäre es, wenn es direkt aus LC gehen würde, aber so funzt es auch ganz gut.

      Unter Windows gibt es wohl ein Tool namens „Mouse Move“, habe ich aber nicht ausprobiert, da auch Mac-User 🙂

Ansicht von 5 Antwort-Themen
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.