Programmatically determine the average greyscale

J. Landman Gay jacque at hyperactivesw.com
Thu Feb 18 22:01:53 EST 2016


On 2/18/2016 8:44 PM, Sannyasin Brahmanathaswami wrote:
> Thanks that could be useful... BTW where to you store this kind of snippet

In an old HC stack I made 20 years ago that I've converted to LC. It's 
not fit for public consumption but it has all my stuff in it so I keep 
using it.

> how do you get the color a specific pixel in an image?

I have three examples. The first one is mine, based on a suggestion from 
Scott Raney. The other two are more sophisticated because they use math...

Jacque's:

on getPixelColor pPt -- pass local stack-based pt
   put the screenmouseloc into tOldLoc
   put (item 1 of pPt) + (the left of this stack) into tloc
   put (item 2 of pPt) + (the top of this stack) into item 2 of tloc
   set the screenmouseloc to tloc
   put the mousecolor into tColor
   set the screenmouseloc to tOldLoc
   return tColor
end getPixelColor

It happens so fast you never see the cursor move.

------

Unknown author:

function readPixelColor pVal
    put globalLoc(pVal) into pVal
    put item 1 of pVal + 1 into item 3 of pVal
    put item 2 of pVal + 1 into item 4 of pVal
    export snapshot from rect pVal to templateImage
    get the imageData of templateImage
    reset templateImage
    return byteToNum(char 2 of it) & "," & byteToNum(char 3 of it) & "," 
& byteToNum(char 4 of it)
end readPixelColor

-------
Scott Rossi:

local theImageData

function getPixelColor pImage,pX,pY
    if theImageData is empty then put the imageData of pImage into
theImageData
    put width of pImage into W
    put ((pY-1)*W)*4+pX*4 into lastChar
    put charToNum(char lastChar of theImageData) into B
    put charToNum(char lastChar-1 of theImageData) into G
    put charToNum(char lastChar-2 of theImageData) into R
    return R,G,B
end getPixelColor


-- 
Jacqueline Landman Gay         |     jacque at hyperactivesw.com
HyperActive Software           |     http://www.hyperactivesw.com




More information about the use-livecode mailing list